程序中的消息通信有哪些?
Binder:进程间通信方式,采用内存映射机制,达到一次Copy即可进行进程间的数据交换。
AIDL,Intent,Message:通信本质,其实都是Binder,它的传输大小不得大于1M。
Socket:效率上比较低,需进过3握4挥的过程。
接口:实现相对复杂,耦合性较大。
Handler:需要拿到 Handler 的句柄,才可通信。
Breakcast:广播相对来说,性能消耗比较大。
文件,共享内存,管道,信号量...
EventBus
Android事件发布/订阅框架,通过解耦发布者和订阅者简化Android事件传递
特点:简洁、解耦。
思想:发布/订阅模式,它定义了一种“一对多”的依赖关系,让多个订阅者对象同时监听某一个主题对象。这个主题对象在自身状态变化时,会通知所有订阅者对象,使它们能够自动更新自己的状态。
RxBus
LiveData
特点:感知声明周期,采用观察者模式(一对一)
LiveDataBus
特点:感知声明周期,采用发布订阅模式(一对多)
更加具体的使用说明参考:
文档:https://github.com/JeremyLiao/SmartEventBus/blob/master/docs/bus_all.md
使用:https://codechina.csdn.net/mirrors/JeremyLiao/LiveDataBus/-/tree/master/live-event-bus