Androidでのラジオの使用

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: "+"收到广播");
    }
}

 

おすすめ

転載: blog.csdn.net/hzkcsdnmm/article/details/107614229