Activityの遷移先を指定したりする仕組みを
『Intent』と言いますが、そのIntentにも種類があります。
そのひとつがBroadcastIntent。
でも、全然理解できてないので、今日は探してきた情報のメモ。
ステム全体に影響を与える様な事項についてはそれらの情報を必要とするシステムにあるアプリケーション全てに対して通知が必要がある。それの実装手段がブロードキャストのintentとなる。逆に言えばブロードキャスト的なintentを受け取ることを宣言することによって、システムの監視ができることになる。
ContextクラスのregisterReceiverメソッドでBroadCastReceiverインターフェースを継承したハンドラと受け取るアクション等を定義したIntentFilterクラスのインスタンスを登録する。そしてブロードキャスト的なintentが発生するとハンドラのonReceive関数が起動される。
http://www.xn--rhq6sw9f0w7aevaf9ak89m.jp/android/androidLecture/Intent2/Intent2.html
Context.broadcastIntent()を使うことによって、そのアプリケーション独自のインテントを他のインテントレシーバーにブロードキャストすることもできます。
http://www29.atwiki.jp/android/?cmd=word&word=broadcastIntent%20startActivity&type=normal&page=%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%2FAndroid%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E8%A7%A3%E4%BD%93%E6%96%B0%E6%9B%B8
private IntentReceiver mDataReceiver = new IntentReceiver(){ @Override public void onReceiveIntent(Context context, Intent intent){ Log.d("hogeRecv","onReceiveIntent: "+intent); } }; private void registerDataReceiver(){ String action = "hogefuga"; IntentFilter filter = new IntentFilter(action); Log.d("hogeRecv","filter="+filter); this.registerReceiver(mDataReceiver,filter); } private void unregisterDataReceiver(){ unregisterReceiver(mDataReceiver); }
Intent iMessage = new Intent(action); iMessage.putExtra("message","loop="+loop); Log.d("hogeSend",iMessage.toString()); broadcastIntent(iMessage);
http://www29.atwiki.jp/android/pages/35.html
これが生成??(送信)
Intent broadcastIntent = new Intent();
broadcastIntent.putExtra(
"message", "Hello, BroadCast!");
broadcastIntent.setAction("MY_ACTION");
getBaseContext().sendBroadcast(broadcastIntent);
受信。
receiver = new MyBroadcastReceiver(); intentFilter = new IntentFilter(); intentFilter.addAction("MY_ACTION"); registerReceiver(receiver, intentFilter);
PendingIntentは基本的に、IntentとstartActivity()
やbroadcastIntent()
などのターゲットアクションを組み合わせたラッパーオブジェクトです。
http://marulec.cloud-market.jp/archive/2007/20080314/20080314_4.pdf
0 件のコメント:
コメントを投稿