一、什么是BroadcastReceive:
BroadcastReceive:广播接收者,
顾名思义,用来接收应用程序和系统发出来的广播,作用体现在方方面面:例如系统电量不足时会产生一个广播,可以利用这条广播提醒用户;系统开机后会产生一条广播,通过这条广播可以开启开机的相关服务等;
二、BroadcastReceive的注册:
1、静态注册:
<receiver android:name=".MyReceiver">
<intent-filter>
<action android:name="android.intent.action.MY_BROADCAST"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
配置好了以后,只要在 只要android.intent.action.MY_BROADCAST这个地址的广播,MyReceiver都能够接收的到;
2、动态注册:
MyReceiver receiver = new MyReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("android.intent.action.MY_BROADCAST");
registerReceiver(receiver, filter);
注意,registerReceiver是android.content.ContextWrapper类中的方法,Activity和Service都继承了ContextWrapper,所以可以直接调用。在实际应用中,我们在Activity或Service中注册了一个BroadcastReceiver,当这个Activity或Service被销毁时如果没有解除注册,系统会报一个异常,提示我们是否忘记解除注册了。所以,记得在特定的地方执行解除注册操作:
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(receiver);
}
三、BroadcastReceive类型:
有序广播(Ordered Broadcast):
它每次只发送到优先级较高的接收者那里,然后由优先级高的接受者再传播到优先级低的接收者那里,优先级高的接收者有能力终止这个广播。