- 动态注册广播:不是常驻型广播,它跟随 Activity 的生命周期。需要在 Activity 结束前,移除广播接收器。
- 静态注册广播:常驻型广播,当应用程序关闭后,如果有广播过来,程序也会被系统调用自动运行。
- 有序广播:优先级高的先接收(不管静态或者动态)。同优先级的广播接收器,动态优先于静态。
同优先级的同类广播接收器:静态:先扫描的优先于后扫描的;动态:先注册的优先于后注册的。
一.动态注册
关键代码
class MyActivity extentds Activity{
//DYNC_BROADCAST可以随意,但注册广播和发送广播时action应该保持一致
private static final String DYNC_BROADCAST = "guo.com.example.dyncBroadcastReceiver";
private DyncBroadcastReceiver dyncBroadcastReceiver = new DyncBroadcastReceiver();
@Override
protected void onCreate(Bundle savedInstanceState) {
.....
// 注册广播
IntentFilter iFilter = new IntentFilter();
iFilter.addAction(DYNC_BROADCAST);
registerReceiver(dyncBroadcastReceiver, iFilter);
}
// 发送广播通知
protected void sendBroadcast(){
Intent intent = new Intent();
intent.setAction(DYNC_BROADCAST);
sendBroacdcast(intent);
}
@Override
protected void onDestroy() {
unregisterReceiver(dyncBroadcastReceiver);
super.onDestroy();
}
}
二.静态注册
class MyActivity extentds Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
.....
}
// 发送广播通知
protected void sendBroadcast(){
Intent intent = new Intent();
intent.setAction("guo.com.example.MyBroadcast");
sendBroacdcast(intent);
}
}
AndroidManifest.xml
<receiver android:name=".MyBroadcastReceiver">
<intent-filter>
<action android:name="guo.com.example.MyBroadcast" />
</intent-filter>
</receiver>
链接:https://blog.csdn.net/weixin_42904469/article/details/120723907