2011年9月7日水曜日

・ BroadcastIntent

Activity間でデータの受け渡しをしたり、
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 件のコメント:

コメントを投稿