Android-BroadcastReceiver的两种注册方式

android里的广播组件主要是两部分:

发送广播事件:通过Context.sendBroadcast来发送,由Intent来传递注册时用到的Action(指定对应的广播接收器)。

接收广播:广播接收器设置一个intentFilter来接受相应的广播,当发送的广播被接收器监听到后,会调用onReceive()方法,并将包含消息的Intent对象传回。

注册广播主要有两种方法:静态注册和动态注册。下面我结合代码说明一下:

一、静态注册

首先写一个MyBroadcastReceiver01类,继承BroadcastReceiver,重写Receiver方法。

Android-BroadcastReceiver的两种注册方式
image

同时,在manifest文件里声明,包含IntentFilter内容。


Android-BroadcastReceiver的两种注册方式
image

在MainActivity里发送广播。


Android-BroadcastReceiver的两种注册方式
image

运行截图:


Android-BroadcastReceiver的两种注册方式
image

二、动态注册。

方便区分,我又写了一个接收器,MyBroadcastReceiver02,同样,继承BroadcastReceiver,重写Receiver方法。

Android-BroadcastReceiver的两种注册方式
image

在MainActivity里:
创建一个MyBroadcastReceiver02实例


Android-BroadcastReceiver的两种注册方式
image

动态注册:


Android-BroadcastReceiver的两种注册方式
image

发送广播:


Android-BroadcastReceiver的两种注册方式
image

解除接收器:


Android-BroadcastReceiver的两种注册方式
image

运行截图:


Android-BroadcastReceiver的两种注册方式
image

两种注册方式的区别

静态注册:
也就是在Manifest文件中注册的,这种方式不管应用是否处于运行状态,接收器都会进行监听。比如说一个程序监听内存动态,这种方式下只要手机上安装应用程序后,不管应用处于什么状态,都会执行监听方法中的内容。

动态注册:
也就是在代码中注册,这用方式下,可以手动接触,在应用程序关闭后也就不再进行监听。考虑到程序效率问题,有些时候可以需要这种方式。