API中的介绍:
You can either dynamically register an instance of this class with Context.registerReceiver() or statically publish an implementation through the tag in your AndroidManifest.xml.
翻译过来就是注册一个BroadcastReceiver类的实例,有两种方式:
1、 动态注册 使用Context.registerReceiver() 方法在MainActivity 中注册
receiver = new SpecialReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("android.intent.action.SCREEN_OFF");
filter.addAction("android.intent.action.SCREEN_ON");
this.registerReceiver(receiver, filter);
一般来说,操作特别频繁的广播使接受者成为:特殊的广播接受者,此时必须使用动态注册,比如锁屏、开屏,操作特别频繁。采用动态注册时,receiver的生命周期和当前Activity保持一致,当前Activity销毁时,receiver注销。
注意事项:要在MainActivity中的onDestroy()方法中 注销当前receiver;
@Override
protected void onDestroy() {
unregisterReceiver(receiver);
super.onDestroy();
}
2、 静态注册 在AndroidManifest.xml文件中注册
> <intent-filter android:priority="500" >
<action android:name="com.itheima.sendorderedbroadcast" />
</intent-filter>
这种方法创建的广播接收者,写入系统的注册表,就算当前Activity被销毁,一旦有广播匹配到时,系统会调用自动运行。
注意事项:Android4.0以上的版本中,如果在设置中强行终止应用,则广播接收者不能接受到广播。
3、 还有一种更特殊的广播接收者:
发送有序广播时,FinallyBroadcastReceiver 不需要再AndroidManifest.xml文件中注册配置。
在安卓开发中,BroadcastReceiver的注册有两种方式:动态注册和静态注册。动态注册通过Context.registerReceiver()在MainActivity中进行,适用于操作频繁的场景,如锁屏、开屏,且receiver的生命周期与Activity同步。静态注册则在AndroidManifest.xml中完成,即使Activity销毁,仍能接收到匹配的广播,但若在4.0以上版本中应用被强制停止,将无法接收广播。此外,有序广播的FinallyBroadcastReceiver无需在AndroidManifest.xml中配置。
2801

被折叠的 条评论
为什么被折叠?



