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文件中注册配置。