Lazy loaded image
技术分享
🗒️Android组件通信:Eventbus原理解析
字数 629阅读时长 2 分钟
2020-7-16
2023-10-13
type
status
date
slug
summary
tags
category
icon
password

概述

EventBus基于安卓优化的发布-订阅事件总线,本质上还是Java的观察者模式。消息接收者注册到Bus总线,消息发送后根据相应的消息类型分发消息。
notion image
总的注册和消息发送流程如下
notion image

源码解读

观察者注册

使用单例模式新建唯一EventBus实例
注册观察者
订阅的时候按监听方法参数分类缓存到Bus总线

消息发送

消息发送者通过post发送消息
拿到消息发送者发送消息的类型
使用反射方法的invoke方法唤起观察者的监听方法

反注册

根据观察者的类型移除事件总线中相应的观察者对象

总结

  1. 由于使用注解,在实际业务开发中可能定位Bug有困难
  1. 使用方便,比Handler和广播方便
  1. 关键代码使用反射,性能可能有所下降
上一篇
Activity、Window、WindowManager、View、ViewRootImpl的作用和相互之间的关系
下一篇
Android适配:dp,sp和px的区别

评论
Loading...