1、为什么要使用liveDataBus
2、liveDataBus为什么会感知生命周期
3、liveDataBus为什么不会存在内存泄漏
4、手写liveDataBus通信框架
已有的组件通信框架
RxBus
优点:效率高,无内存泄漏。
确定:基于RxJava,学习成本太大,而且依赖包有2.2M,会对我们的apk产生一定负担
EventBus
优点:使用简单,能达到项目基本需求
缺点:混淆问题,无法感知生命周期,很难追踪到发布源。
LiveDataBus
使用极其简单
代码量很少
官方提供了很稳定的并且会一直维护的可依赖包
能感知组件(Activity,Fragment,Service等)的生命周期
不会内存泄漏
Android架构组件之Lifecycle
Lifecycle是android官方推出的官方架构中的其中之一,他是具有生命周期感知的,不但能够监听Activity和Fragment的生命周期,还能回调相应的方法,同时他能够实时的获取当前Activity和fragment的状态。
LiveData是什么?
LiveData是一个数据持有类,持有数据并且这个数据能被观察者所监听到,而且它是和Lifecylce绑定的,具有生命周期感知,解决内存泄漏和引用问题。
EventBus.get().regist
EventBus.get().post(xx)
自定义事件总线框架:
1、消息
任何Object,比如Boolean,String
2、消息通道
LiveData扮演消息通道的角色,不同的消息通道用不同的名字区分,
可以通过名字获取到一个LiveDataBus
3、消息总线
单例方式实现 集合--HashMap
4、订阅者
Observer(LiveData配套的)
5、发布者
post();(LiveData配套)
反射hook:
observer.mLastVersion = mVersion;
LiveData.mVersion
拿到实例observer--->for(map){}----->LiveData.SafeIterableMap
网友评论