美文网首页
解密通信框架领域独秀LiveDataBus

解密通信框架领域独秀LiveDataBus

作者: Ahwind | 来源:发表于2019-05-19 16:00 被阅读0次

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

demo:https://github.com/ApeCold/Learn_LiveDataBus

相关文章

网友评论

      本文标题:解密通信框架领域独秀LiveDataBus

      本文链接:https://www.haomeiwen.com/subject/hqtqzqtx.html