Android - 无序广播动态注册广播

   代码注册时可以将广播接收者作为一个内部类写在Activity中,也可以重新写一个类继承自BroadCastReceiver,需要用代码注册(注册广播可以写在任意的地方,只有注册的广播接收者才能收到对应的广播),比如在 Activity 中的 onCreate 或者 onResume 中注册广播接收者,在 onDestory 中注销广播接收者,这种注册方式也叫动态注册。这种方式可以理解为通过代码注册的广播是和注册者关联在一起的。


   同样,先创建 MyReceiver03 这样一个广播接收者



在这里插入图片描述


   对 onCreate方法覆写,为 MyReceiver03 动态注册,向意图过滤器中添加action (同一频道) 属性, 通过 registerReceiver方法,添加 MyReceiver03的对象 和 意图过滤器。



在这里插入图片描述


   动态注册时,为节省系统资源,不让广播接收者时刻去监听,可以注销。覆写 onDestroy() 方法,通过 unregisterReceiver 去注销 MyReceiver03



在这里插入图片描述



在这里插入图片描述



   退出时,注销 MyReceiver03



在这里插入图片描述



   核心代码如下:



@Override
    protected void onCreate(Bundle savedInstanceState) {
    
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 动态注册广播3 MyReceiver03
        // 获得 MyReceiver03的对象
        myReceiver03 = new MyReceiver03();
        // 创建意图过滤器
        IntentFilter intentFilter = new IntentFilter();
        // 向意图过滤器中添加action属性
        String action = MY_ACTION;
        intentFilter.addAction(action);
        // 动态注册
        registerReceiver(myReceiver03,intentFilter);

}


// Activity销毁时,注销广播
    @Override
    protected void onDestroy() {
    
    
        super.onDestroy();
        // 注销
        unregisterReceiver(myReceiver03);
        Toast.makeText(this,"myReceiver03广播被注销了",Toast.LENGTH_SHORT).show();
    }

猜你喜欢

转载自blog.csdn.net/weixin_48591974/article/details/127978564
今日推荐