一、广播
1.广播的定义
应用程序之间(不同程序) 传输信息的机制 (有点类似观察者模式),android中我们要发送的广播内容是一个Intent,可以携带我们要传输的数据
例子: service 中发送广播 ,activity中接收,进行ui界面更新
2.广播的场景
- A.同一app具有多个进程的不同组件 之间的消息通讯(进程之间的消息通讯 )
- B. 不同app之间的组件之间消息通讯
3.广播的种类
-
标准广播 Context.sendBraodcast
完全异步执行 所有广播接收器 同时接受 (无法被截断) -
有序广播 Context.sendOrderedBraodcast
先后顺序 优先级高的先接受 abortBroadcast()中断后面的 -
Local Broadcast 本地广播 只在app内传播 (只能动态注册的方式去实现 )
不用担心安全性
更高效
二、实现广播 receiver
- 静态注册 注册完成后就一直运行
接收广播 与activity无关 甚至app 进程杀死了 仍然能收到广播
在AndroidManifest.xml 中注册


- 动态注册:跟随activity 的生命周期
intentFilter = new IntentFilter();
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
networkChangeReceiver = new NetworkChangeReceiver();
registerReceiver(networkChangeReceiver, intentFilter);
//需要 取消注册 避免内存泄漏
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(networkChangeReceiver);
}
三、广播实现机制
AMS android 核心服务 , 负责 四大组件的启动 切换 调度,应用程序的管理和调度工作
Binder机制 整体架构 是客户端 服务端cs 结构,客户端进程可以获取到服务端进程的代理 来读取数据

四、LocalBroadcastManager(本地广播详解)



网友评论