Android常用コンポーネントBroadcastの紹介

5635 ワード

一、Broadcastの概要
BroadcastはAndroidの4つのコンポーネントの1つです.次のように分類できます.
1.通常放送は1つの放送を送信し、その放送を傍受するすべての放送受信者は変更放送を傍受することができる. 
2、非同期放送処理後のIntentは、依然として存在し、registerReceiver(BroadcastReceiver、IntentFilter)は、それを削除するまで、処理結果を次の受信者に伝えることができず、放送を終了することができません.
3、秩序放送は受信者の優先度順に放送を受信し、優先度はintent-filterのpriorityで宣言、-1000から1000の間で、値が大きいほど優先度が高くなる.放送意図の継続的な伝播を終了することができる.受信者はコンテンツを改ざんすることができる. 
二、ブロードキャストBroadcast実現過程
1、登録
a、プロファイル登録
1 <!--              -->  

2 <receiver android:name="com.example.androidtest.broadcast.MyReceiver">

3   <intent-filter >

4      <action android:name="MyAction"/>

5    </intent-filter>

6</receiver>

b、コード登録
1 MyReceiver myReceiver = new MyReceiver();

2 IntentFilter filter = new IntentFilter();

3 filter.addAction("MyAction");

4 registerReceiver(myReceiver,filter);

2、放送を送る
1 Intent intent = new Intent();

2 intent.setAction("MyAction");

3 intent.putExtra("msg", "         ");

4 sendBroadcast(intent);

3、受信クラスの実現
BroadcastReceiverを継承し、onReceiveメソッドを再書き込みします.
1 public class MyReceiver extends BroadcastReceiver

2 {

3     public void onReceive(Context context, Intent intent)

4     {

5         Toast.makeText(context, "     :" + intent.getStringExtra("msg"), Toast.LENGTH_SHORT).show();

6     }

7 

8 }

三、内部クラスが放送受信クラスとしてどのように実現されるか
1、登録
a、プロファイル登録
1 <!--              -->  

2 <receiver android:name="com.example.androidtest.broadcast.BroadcastTest$MyReceiver">  <!--        :   $    -->

3   <intent-filter >

4      <action android:name="MyAction"/>

5    </intent-filter>

6</receiver>

b、コード登録
1 MyReceiver myReceiver = new MyReceiver();

2 IntentFilter filter = new IntentFilter(); 3 filter.addAction("MyAction"); 4 registerReceiver(myReceiver,filter);

2、放送を送る
1 Intent intent = new Intent();

2 intent.setAction("MyAction"); 3 intent.putExtra("msg", "         "); 4 sendBroadcast(intent);

3、受信クラスの実現
注意:プロファイルに登録する場合は、クラスはstaticと宣言する必要があります.そうしないと見つかりません.コードに登録するとstatic修飾を省略できます.
1 public static class MyReceiver extends BroadcastReceiver 

2 { 3 public void onReceive(Context context, Intent intent) 4  { 5 Toast.makeText(context, "     :" + intent.getStringExtra("msg"), Toast.LENGTH_SHORT).show(); 6  } 7 8 }

四、用途
電源を入れ、スクリーンをロックし、電力量が低い......
五、注意
ライフサイクルは10秒程度で、onReceive()内で10秒を超えることをすると、エラーが発生します.
ブロードキャストが来るたびにBroadcastReceiverオブジェクトが再作成され、onReceive()メソッドが呼び出され、実行が完了すると破棄されます.onReceive()メソッドが10秒以内に実行されない場合、Androidはこのプログラムに応答しないと判断する.BroadcastReceiverでは時間のかかる操作はできませんが、ANR(Application NoResponse)のダイアログボックスがポップアップします.
コンテンツの一部:http://yangguangfu.iteye.com/blog/1063732