1. 程式人生 > >BroadcastReceiver的兩種註冊方式和使用

BroadcastReceiver的兩種註冊方式和使用

BroadcastReceiver是android中的一個非常重要的元件,常用於接收廣播資訊。廣播的註冊使用有兩種方式:

靜態註冊(在 AndroidManifest.xml 中 )

  1. <receiverandroid:name=".BroadcastReceiverDemo">
  2.             <intent-filter>
  3.                 <actionandroid:name="com.simware.BroadcastReceiverDemo">
  4.                 </action>
  5.             </
    intent-filter>
  6. </receiver>

建立一個BroadcastReceiver

  1. publicclass BroadcastReceiverDemo extends BroadcastReceiver {  
  2.     @Override
  3.     publicvoid onReceive(Context context, Intent intent) {  
  4.         // TODO Auto-generated method stub
  5.         String msg = intent.getStringExtra("message");  
  6.         Toast.makeText(context, msg, Toast.LENGTH_LONG).show();  
  7.     }  
  8. }  

在onReceive方法內,可以獲取隨廣播而來的Intent中的資料,這非常重要,就像無線電一樣,包含很多有用的資訊。在建立完我們的BroadcastReceiver之後,還不能夠使它進入工作狀態,我們需要為它註冊一個指定的廣播地址。沒有註冊廣播地址的BroadcastReceiver就像一個缺少選臺按鈕的收音機,雖然功能俱備,但也無法收到電臺的訊號。在Manifest.xml檔案中已經註冊了BroadcastReceiver的廣播地址。
  1. <span style="font-size:18px;">      </span><span style=
    "font-size:18px;">Intent mIntent = new Intent("com.simware.BroadcastReceiverDemo");  
  2.                 mIntent.putExtra("message", showText.getText().toString());  
  3.                 sendBroadcast(mIntent);</span>  


在Activity傳送廣播,就觸發了廣播事件。

 動態註冊(在程式碼中註冊)

registerReceiver(BroadcastReceiver receiver, IntentFilterfilter) 

第一個引數是我們要處理廣播的BroadcastReceiver (廣播接收者,可以是系統的,也可以是自定義的);第二個引數是意圖過濾器。

總結:在 Activity 中程式碼註冊廣播建議在: onResume() 中註冊(也可在onCreate裡面註冊);在 Activity 中程式碼登出廣播建議在: onPuase() 中登出(也可在onDestory裡面登出)unregisterReceiver(mBatteryInfoReceiver) 。