天天看點

Android BroadcastReceiver

作為Android的四大元件之一,BroadcastReceiver 本質上是一種全局性的監聽器,可以友善的實作不同元件間的通信,比如用戶端程式與startService()方法啟動的Service直接的通信。

發送廣播:

與 Activity 、Service 一樣隻需兩步:

1. 建立 Intent.

2. 調用 Context 的 sendBroadcast() 或者 sendOrderedBrocast() 方法來啟動指定的 BroadcastReceiver。

Intent intent = new Intent("BROADCAST_ACTION");
intent.putExtra("com.test.data", 1);// 名字必須帶有包的字首
sendBroadcast(intent);      

接收廣播:

1. 實作BroadcastReceiver ,并重寫onReceiver(Context context,Intent intent),用來執行指定的收到廣播後的操作。

2. 指定與該 BroadcastReceiver 能比對的Intent。

  (1)動态注冊,不需要配置清單檔案。Java 代碼中:

receiver = new myBrocastReceiver();
IntentFilter filter = new IntentFilter(ConstantValues.BROCAST_CODE1);
registerReceiver(receiver, filter);// 别忘了取消。      

(2)靜态注冊。AndroidMainfest.xml中

<receiver android:name="com.test.Receiver" >
    <intent-filter>
        <action android:name="com.test.action.FLAG" />
    </intent-filter>
</receiver>      
class myBrocastReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
      // TODO Auto-generated method stub
      Log.d(TAG, "myBrocastReceiver");

      int value = intent.getIntExtra("com.test.data", -1);

      switch (value) {
      case 0x001:

        break;

      default:
        break;
      }

    }