Android-BroadcastReceiver使用筆記


#以下爲BroadcastReceiver使用筆記,如有不明白請留言。

註冊靜態廣播
1)建立MyReceiver繼承至BroadcastReceiver,並實現onReceived方法
@Override
public void onReceive(Context contextIntent 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">

#攔截廣播:無序廣播不可被攔截,否則會出異常
abortBroadcast();


發送本地廣播(本地廣播只能在應用中被接收,安全)
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);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章