观察者模式
2026/8/24小于 1 分钟
观察者模式
定义对象间一种一对多的依赖关系,每当一个对象改变状态,所有依赖于它的对象都会得到通知并被自动更新。
Android 中的实现一:Adapter 数据刷新
RecyclerView / ListView 的数据刷新机制是观察者模式的典型应用:
MyAdapter adapter = new MyAdapter();
recyclerView.setAdapter(adapter);
adapter.notifyDataSetChanged();调用链:
adapter.notifyDataSetChanged()→AdapterDataObservable.notifyChanged()- 遍历所有观察者(
RecyclerViewDataObserver)调用onChanged() onChanged()中调用requestLayout()触发列表重新布局刷新
Android 中的实现二:广播机制
应用发送广播的流程:
sendBroadcast通过 Binder 将广播发送给ActivityManagerService,AMS 根据 Action 找到对应广播接收器,放入自己的消息队列(第一阶段异步分发)- AMS 在消息循环中处理广播,通过 Binder 分发给注册的
ReceiverDispatcher ReceiverDispatcher将广播放入主线程消息队列(第二阶段异步分发)- 内部类
Args在主线程消息循环中处理广播,最终回调BroadcastReceiver.onReceive()
整个过程体现了"被观察者(AMS)通知观察者(BroadcastReceiver)"的一对多关系。