Android-BroadcastReceiver的两种注册方式
android里的广播组件主要是两部分:
发送广播事件:通过Context.sendBroadcast来发送,由Intent来传递注册时用到的Action(指定对应的广播接收器)。
接收广播:广播接收器设置一个intentFilter来接受相应的广播,当发送的广播被接收器监听到后,会调用onReceive()方法,并将包含消息的Intent对象传回。
注册广播主要有两种方法:静态注册和动态注册。下面我结合代码说明一下:
一、静态注册
首先写一个MyBroadcastReceiver01类,继承BroadcastReceiver,重写Receiver方法。
同时,在manifest文件里声明,包含IntentFilter内容。
在MainActivity里发送广播。
运行截图:
二、动态注册。
方便区分,我又写了一个接收器,MyBroadcastReceiver02,同样,继承BroadcastReceiver,重写Receiver方法。
在MainActivity里:
创建一个MyBroadcastReceiver02实例
动态注册:
发送广播:
解除接收器:
运行截图:
两种注册方式的区别
静态注册:
也就是在Manifest文件中注册的,这种方式不管应用是否处于运行状态,接收器都会进行监听。比如说一个程序监听内存动态,这种方式下只要手机上安装应用程序后,不管应用处于什么状态,都会执行监听方法中的内容。
动态注册:
也就是在代码中注册,这用方式下,可以手动接触,在应用程序关闭后也就不再进行监听。考虑到程序效率问题,有些时候可以需要这种方式。