BroadcastReceiver

廣播的類型主要分為5類:

普通廣播(Normal Broadcast)
系統(tǒng)廣播(System Broadcast)
有序廣播(Ordered Broadcast)
粘性廣播(Sticky Broadcast)
App應(yīng)用內(nèi)廣播(Local Broadcast)

發(fā)送普通廣播使用步驟

①自定義一個關(guān)播接收者繼承BroadcastReceivre
②注冊 靜態(tài)注冊 動態(tài)注冊
③通過intent發(fā)送廣播

  • 靜態(tài)注冊 在在AndroidManifest.xml里通過<receive>標(biāo)簽聲明
<receiver android:name=".StaticalReceiver">
            <intent-filter>
                <action android:name="com.example.broadcastreceiver.StaticalReceiver"/>
            </intent-filter>
        </receiver>
  • 動態(tài)注冊 在onResume調(diào)用 registerReceiver方法
@Override
    protected void onResume() {
        super.onResume();
        //獲取廣播接收者的對象
        dynamicReceiver = new DynamicReceiver();
        //添加intentFilter
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction("com.example.broadcastreceiver.StaticalReceiver");

        //注冊廣播 
        registerReceiver(dynamicReceiver, intentFilter);
    }

    @Override
    protected void onPause() {
        super.onPause();
        //銷毀廣播
        unregisterReceiver(dynamicReceiver);
    }
  1. 順序廣播

①動態(tài)注冊
②通過intentFilter.setPriority();決定接收廣播的先后順序
③銷毀廣播

private void order() {
        Intent intent = new Intent("com.example.broadcastreceiver.StaticalReceiver");
        sendOrderedBroadcast(intent, null);
    }
  1. 本地廣播
//注冊應(yīng)用內(nèi)廣播接收器
//步驟1:實例化BroadcastReceiver子類 & IntentFilter mBroadcastReceiver 
localReceiver= new LocalReceiver(); 
IntentFilter intentFilter = new IntentFilter(); 

//步驟2:實例化LocalBroadcastManager的實例
localBroadcastManager = LocalBroadcastManager.getInstance(this);

//步驟3:設(shè)置接收廣播的類型 
intentFilter.addAction("com.example.broadcastreceiver.LocalReceiver");

//步驟4:調(diào)用LocalBroadcastManager單一實例的registerReceiver()方法進行動態(tài)注冊 
localBroadcastManager.registerReceiver(localReceiver, intentFilter);

//取消注冊應(yīng)用內(nèi)廣播接收器
localBroadcastManager.unregisterReceiver(localReceiver);

//發(fā)送應(yīng)用內(nèi)廣播
Intent intent = new Intent();
intent.setAction("com.example.broadcastreceiver.LocalReceiver");
localBroadcastManager.sendBroadcast(intent);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容