1、广播
定义:一种应用程序之间传输信息的机制
场景:同一应用具有多个进程的不同组件之间的消息通信、不同app之间的组件之间的消息通信
种类:Normal Broadcast普通广播 System Broadcast有序广播 Local Broadcast本地广播(App内传播)
2、实现广播接收器
静态注册:注册完成就一直运行
在manifest.xml中注册
<receiver
android:name=".MyBroadCastReceiver">
<intent-filter>
<action android:name="android.intent.action.MyBroadcast"/>
</intent-filter>
</receiver>
动态注册:跟随Activity的生命周期
intentFilter = new IntentFilter();
intentFilter.addAction("android.intent.action.MyBroadcast");
MyBroadCastReceiver myBroadCastReceiver= new MyBroadCastReceiver();
registerReceiver( myBroadCastReceiver, intentFilter);
3、内部实现机制
自定义广播接受者,复写onReceive()
通过Binder机制向AMS(Activity Manager Service)进行注册
广播发送者通过Binder机制向AMS发送广播
AMS查找符合条件的BroadcastReceiver,将广播发送到相应的消息循环队列
消息循环执行拿到此广播,回调onReceiver()
4、LocalBroadcastManager
内部是通过Handler实现的
只在App内传播,不必担心隐私泄露
其他App无法对你的App发送改广播
比系统全局广播更加高效