手写消息总线LiveDataBus,让你永无后顾之忧

本文深入探讨了Android的消息总线 LiveDataBus,揭示其核心原理——发布-订阅模式结合LiveData。通过手动实现LiveDataBus,解决了传统通信方式的缺点,如EventBus的过时问题。文中详细阐述了LiveDataBus的构建过程,包括获取MutableLiveData、创建观察者、发送消息等步骤,并通过源码分析解释了其生命周期管理。最后,通过hook技术避免了未启动页面接收消息的问题,确保了消息传递的合理性。
摘要由CSDN通过智能技术生成

做了很久的面试专题,不知道对各位需要面试和有跳槽想法的小伙伴有没有帮助,今天收集一篇关于LiveDataBus方面的文章,面试方面的收集,后续我还会持续更新如果觉得有用可以点个关注

手写消息总线LiveDataBus,让你永无后顾之忧
链接: https://pan.baidu.com/s/1P_LYQkBvnhBnHMz4qzRpuQ 提取码: h7ib 复制这段内容后打开百度网盘手机App,操作更方便哦

Android四大组件和线程间通信方式有很多,比如Handler管道、广播、接口回调、rxBus、EventBus等,但是这些方式都存在一些瑕疵,(比如EvebtBus可能现在用的人比较少了,个人见解可以能算半个过时性的~个人见解不喜勿喷)具体的优缺点如下:

那么有没有一种通信方式可以集以上所有框架的优点于一身,并且避免以上缺点呢?答案就是作者今天要分享的livedatabus,livedatabus是基于原生的livedata实现的通信框架,它拥有以下的优点:

首先我们来看一下LiveDataBus的整体架构,消息总线用来保存所有的消息通道,然后订阅者订阅其中任意的通道,发布者向通道发布消息

一.LiveDataBus核心原理是什么?

LiveDataBus原理其实就是发布-订阅模式+liveData,接下来作者会一一道来。首先说说发布-订阅模式,这个模式和观察者模式有些类似,甚至在有的设计模式书籍里也认为这2个模式是等同的。我个人觉得仔细分析的话还是有一些不同的地方,最大的地方在于在观察者模式中观察者和被观察者是互相知道对方的,但是发布-订阅模式中订阅者并不知道发布者是谁。所以在需要对二者进行解耦时最好使用发布-订阅模式,发布者不需要知道订阅者的存在,二者只是共用一个信息通道。一般是在单线程中使用观察者模式,但是如果是在不同线程中通信就用发布-订阅模式会更适合。观察者模式和发布-订阅者模式对比

观察者模式:

发布-订阅者模式:

在客车里乘客相当于观察者,上车时乘务员通过买票知道了每位乘客到站信息,所以乘客只需要时刻观察乘务员的指示,当到站点时乘务员会给出当面指示,到站点的乘客可以根据乘务员的当面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值