做了很久的面试专题,不知道对各位需要面试和有跳槽想法的小伙伴有没有帮助,今天收集一篇关于
LiveDataBus
方面的文章,面试方面的收集,后续我还会持续更新如果觉得有用可以点个关注
手写消息总线LiveDataBus,让你永无后顾之忧
链接: https://pan.baidu.com/s/1P_LYQkBvnhBnHMz4qzRpuQ 提取码: h7ib 复制这段内容后打开百度网盘手机App,操作更方便哦
Android四大组件和线程间通信方式有很多,比如Handler管道、广播、接口回调、rxBus、EventBus等,但是这些方式都存在一些瑕疵,(比如EvebtBus可能现在用的人比较少了,个人见解可以能算半个过时性的~个人见解不喜勿喷)具体的优缺点如下:
那么有没有一种通信方式可以集以上所有框架的优点于一身,并且避免以上缺点呢?答案就是作者今天要分享的livedatabus,livedatabus是基于原生的livedata实现的通信框架,它拥有以下的优点:
首先我们来看一下LiveDataBus的整体架构,消息总线用来保存所有的消息通道,然后订阅者订阅其中任意的通道,发布者向通道发布消息
一.LiveDataBus核心原理是什么?
LiveDataBus原理其实就是发布-订阅模式+liveData,接下来作者会一一道来。首先说说发布-订阅模式,这个模式和观察者模式有些类似,甚至在有的设计模式书籍里也认为这2个模式是等同的。我个人觉得仔细分析的话还是有一些不同的地方,最大的地方在于在观察者模式中观察者和被观察者是互相知道对方的,但是发布-订阅模式中订阅者并不知道发布者是谁。所以在需要对二者进行解耦时最好使用发布-订阅模式,发布者不需要知道订阅者的存在,二者只是共用一个信息通道。一般是在单线程中使用观察者模式,但是如果是在不同线程中通信就用发布-订阅模式会更适合。观察者模式和发布-订阅者模式对比
观察者模式:
发布-订阅者模式:
在客车里乘客相当于观察者,上车时乘务员通过买票知道了每位乘客到站信息,所以乘客只需要时刻观察乘务员的指示,当到站点时乘务员会给出当面指示,到站点的乘客可以根据乘务员的当面