详解Android中BroadCastReceiver组件

2019-12-10 18:57:11王旭

 另外值得注意的是,当我们使用动态注册时候,当这个Activity或Service被销毁时如果没有解除注册,系统会报一个异常,提示我们是否忘记解除注册了,所以我们需要在onDestroy()方法中进行解除注册,一般:在onStart中注册,onStop中取消unregisterReceiver:

@Override 
protected void onDestroy() { 
  super.onDestroy(); 
  unregisterReceiver(receiver); 
}

  指定广播目标Action:Intent intent = new Intent(actionString);

  并且可通过Intent携带消息 :intent.putExtra(“msg”, “hi,我通过广播发送消息了”);

  发送广播消息:Context.sendBroadcast(intent )

其中在动态注册中可将BroadcastReceiver的继承类进行封装,添加构造函数和BroadcastReceiver注册

BroadcastReceiver的案例演示

首先我们创建一个类MyBroadcastReceiver用于继承BroadcastReceiver: 
这里重写了一个方法就是接受广播的意图并匹配:

//定义的为:public static final String //ACTION_REGISTER_SUCCESS_FINISH="register.success.finish";
Constants.ACTION_REGISTER_SUCCESS_FINISH.equals(intent.getAction())

这里是常量:定义如下:

public class MyBroadcastReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
      if (intent != null && Constants.ACTION_REGISTER_SUCCESS_FINISH.equals(intent.getAction())) {
        finish();
      }
    }
  }