BroadcastReceiver的兩種註冊方式和使用
阿新 • • 發佈:2019-01-23
BroadcastReceiver是android中的一個非常重要的元件,常用於接收廣播資訊。廣播的註冊使用有兩種方式:
靜態註冊(在 AndroidManifest.xml 中 )
- <receiverandroid:name=".BroadcastReceiverDemo">
- <intent-filter>
- <actionandroid:name="com.simware.BroadcastReceiverDemo">
- </action>
- </
- </receiver>
建立一個BroadcastReceiver
- publicclass BroadcastReceiverDemo extends BroadcastReceiver {
- @Override
- publicvoid onReceive(Context context, Intent intent) {
- // TODO Auto-generated method stub
- String msg = intent.getStringExtra("message");
- Toast.makeText(context, msg, Toast.LENGTH_LONG).show();
- }
- }
在onReceive方法內,可以獲取隨廣播而來的Intent中的資料,這非常重要,就像無線電一樣,包含很多有用的資訊。在建立完我們的BroadcastReceiver之後,還不能夠使它進入工作狀態,我們需要為它註冊一個指定的廣播地址。沒有註冊廣播地址的BroadcastReceiver就像一個缺少選臺按鈕的收音機,雖然功能俱備,但也無法收到電臺的訊號。在Manifest.xml檔案中已經註冊了BroadcastReceiver的廣播地址。
- <span style="font-size:18px;"> </span><span style=
- mIntent.putExtra("message", showText.getText().toString());
- sendBroadcast(mIntent);</span>
在Activity傳送廣播,就觸發了廣播事件。
動態註冊(在程式碼中註冊)
registerReceiver(BroadcastReceiver receiver, IntentFilterfilter)
第一個引數是我們要處理廣播的BroadcastReceiver (廣播接收者,可以是系統的,也可以是自定義的);第二個引數是意圖過濾器。
總結:在 Activity 中程式碼註冊廣播建議在: onResume() 中註冊(也可在onCreate裡面註冊);在 Activity 中程式碼登出廣播建議在: onPuase() 中登出(也可在onDestory裡面登出)unregisterReceiver(mBatteryInfoReceiver) 。