1.動的ブロードキャストと静的ブロードキャスト
静的放送
需要在AndroidManifest.xml文件中配置
、常驻性广播,无论程序启动与否,广播依然存在
特徴があります。例:ブートのブロードキャストを受信できます。このブロードキャストを受信すると、onReceive()メソッドで対応するロジックを実行して、ブートの機能を実現できます。
ダイナミックブロードキャスト
ブロードキャストアドレスは動的に指定され、コードに登録されます非常驻型,广播会跟随程序的生命周期的结束而结束
。コードには特性があります。必要に特別な注意をしている:必要性はonCreate()
、登録することonDestroy()
償却の。
2.整然とした放送と標準的な放送
整然とした放送
同期ブロードキャストです。ブロードキャストが送信された後、同時にメッセージを受信できるのは1つのブロードキャストレシーバーのみです。ブロードキャストのロジックが実行されると、ブロードキャストは拡散し続けます。
標準放送
非同期で送信されます。ブロードキャストが送信された後、すべてのブロードキャスト受信者はほぼ同時にメッセージを受信します。それらの間に順序はなく、この種のブロードキャストは切り捨てることができません。
3.グローバル放送とローカル放送
グローバル放送:
グローバルブロードキャストとは、ブロードキャストを他のアプリケーションで受信できること、または他のアプリケーションから受信できることを意味します。
ローカル放送:
ローカルブロードキャストは、アプリケーション内でのみ配信できるブロードキャストです。ブロードキャストレシーバーは、内部ブロードキャストのみを受信でき、他のアプリケーションからのブロードキャストを受け入れることはできません。
4.コード
パラメータの準備
public static final String BROADCAST_ACTION="com.test.TestBroadcast";
private TestBroadcastReceiver receiver;
private TempReceiver receiver2;
private LocalBroadcastManager localBroadcastManager;
ブロードキャストを登録します。ここでは、2つのレシーバーを例として取り上げ、oncreateの呼び出しに注意を払います。
private void registerBroadcast(){
IntentFilter filter=new IntentFilter();
filter.addAction(BROADCAST_ACTION);
receiver=new TestBroadcastReceiver();
receiver2=new TempReceiver();
localBroadcastManager=LocalBroadcastManager.getInstance(this);
localBroadcastManager.registerReceiver(receiver,filter);
localBroadcastManager.registerReceiver(receiver2,filter);
}
送信者:
アクティビティのボタンのクリックイベントをクリックし、クリックイベントに書き込みます。必要に応じてさまざまな種類のブロードキャストを選択します。ここではローカル標準ブロードキャストを選択します。
Intent intent=new Intent(DATA_REFRESH_BROADCAST_ACTION);
//sendBroadcast(intent);//发送标准广播
//sendOrderedBroadcast(intent,null);//发送有序广播
localBroadcastManager.sendBroadcast(intent);//发送本地标准广播
//localBroadcastManager.sendBroadcastSync(intent);//发送本地有序广播
@Override
protected void onDestroy() {
super.onDestroy();
localBroadcastManager.unregisterReceiver(receiver);//注销本地广播
localBroadcastManager.unregisterReceiver(receiver2);
}
レシーバー:
public class TestBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("receiver", "onReceive: "+"收到广播");
}
}
public class TempReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("receiver2", "onReceive: "+"收到广播");
}
}