廣播的類型主要分為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);
}
- 順序廣播
①動態(tài)注冊
②通過intentFilter.setPriority();決定接收廣播的先后順序
③銷毀廣播
private void order() {
Intent intent = new Intent("com.example.broadcastreceiver.StaticalReceiver");
sendOrderedBroadcast(intent, null);
}
- 本地廣播
//注冊應(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);