#以下爲BroadcastReceiver使用筆記,如有不明白請留言。
註冊靜態廣播
1)建立MyReceiver繼承至BroadcastReceiver,並實現onReceived方法
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context,"Boot Completed",Toast.LENGTH_LONG).show();
}
2)AndroidManifest中添加註冊信息
<receiver android:name=".MyReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
3)發送無序廣播
Intent i = new Intent("android.intent.action.BOOT_COMPLETED");
sendBroadcast(i);
#通過廣播更新UI的方法:Activity寫Receiver內部類,註冊靜態廣播,並在onReceived方法中調用Handler更新信息
動態註冊廣播:
1)在Activity中建立Receiver的對象,添加過濾器
myReceiver = new MyReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(MyReceiver.MYRECEIVER);
registerReceiver(myReceiver,intentFilter);
2)在onDestroy()中取消註冊
unregisterReceiver(myReceiver);
3)發送無序廣播
Intent i = new Intent(MyReceiver.MYRECEIVER);
sendBroadcast(i);
#動態註冊不需要在AndroidManifest文件中添加相應的IntentFilter,否則sendBroadcast()時Receiver會接收到兩條相同的信息
#有序廣播爲sendOrderedBroadcast();
#優先級:無序廣播和有序廣播都可以被優先級控制
<intent-filter android:priority="10">
#攔截廣播:無序廣播不可被攔截,否則會出異常
發送本地廣播(本地廣播只能在應用中被接收,安全)
1)獲取LocalBroadcastManager實例
localBroadcastManager = LocalBroadcastManager.getInstance(this);
2)動態註冊廣播
myReceiver = new MyReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(MyReceiver.MYRECEIVER);
localBroadcastManager.registerReceiver(myReceiver,intentFilter);
3)發送廣播
Intent i = new Intent(MyReceiver.MYRECEIVER);
localBroadcastManager.sendBroadcast(i);
4)onDestroy()取消註冊
localBroadcastManager.unregisterReceiver(myReceiver);