Android接收广播有两种方法
- 静态注册的广播接收器接收广播
- 动态注册的广播接收器接收广播
静态广播接收器
单独创建一个Java文件,写一个类,继承BroadcastReceiver,并且在清单文件中注册该接收器。
AndroidManifest写法
<receiver
android:name=".device.display.daydream.MyDaydreamBroadcastReceiver"
android:exported="true" >
<intent-filter>
<action android:name="helo.intent.finish.daydream" />
</intent-filter>
</receiver>
BroadcastReceiver写法
public class MyDaydreamBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//do something
}
}
动态广播接收器
在Activity或者service中创建内部类,继承BroadcastReceiver,不用在清单文件中注册。
写法如下
public class DaydreamBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//do something
}
}
两种接收器的区别
这两种广播接收器的区别是:
静态注册的广播可以在广播发送后随时收到,不要求当前应用是否已经启动。
动态注册的广播不会在广播发送后随时收到,要求当前应用已经启动,并且完成注册过程。