特别注意:
Android8.0之后,除了个别广播仍支持静态注册,其他的广播静态注册失效,以后,广播动态注册即可!
发送广播分为:发送系统广播和发送本地广播。
一、发送系统广播:不仅本应用内可以收到广播,其他应用内也可以收到广播。(不安全)
(1)sendBroadcast():发送标准广播。
//自定义一个action
Intent intent = new Intent("com.deepreality.broadcasereceivertestdemo1.MY_BROADCAST");
sendBroadcast(intent);
(2)sendOrderBroadcast():发送有序广播。(有序广播可以在优先级比较高的广播接收器里被截断。1、给每一个广播接收器添加priority优先级;2、在相应的广播接收器的onReceive方法中调用abortBroadcast方法即可截断广播)
//自定义一个action
Intent intent = new Intent("com.deepreality.broadcasereceivertestdemo1.MY_BROADCAST");
//sendBroadcast(intent);
sendOrderedBroadcast(intent, null);
<intent-filter android:priority="100">
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
二、发送本地广播:只有在本应用内才可以收到广播。(安全)
备注:主要就是通过一个本地广播管理器来进行管理。(同样需要注册和取消广播接收器)
//本地广播管理器注册广播接收器
localBroadcastManager.registerReceiver(netWorkChangeReceiver, intentFilter);
//本地广播管理器取消广播接收器(在onDestroy方法里调用)
localBroadcastManager.unregisterReceiver(netWorkChangeReceiver);
//自定义一个action
Intent intent = new Intent("com.deepreality.broadcasereceivertestdemo1.MY_LOCALBROADCAST");
//创建一个本地广播管理器
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(mContext);
//发送本地广播
localBroadcastManager.sendBroadcast(intent);