Android消息总线,基于LiveData,具有生命周期感知能力,支持Sticky
简单之美
LiveDataBus的整个实现就一个类,不超过150行代码。不需要过于繁杂的功能,简单好用,就是最好的:)
主要commit记录
- 主要功能完成(Jul 11, 2018)
- 支持Sticky(Aug 8, 2018)
- 修复在后台线程PostValue会丢失消息的问题(Aug 9, 2018)
如何使用本项目
- Fork本项目
- 或者直接拷贝源码:LiveDataBus.java
依赖
依赖Android Architecture Components,具体可参见gradle文件build.gradle
调用方式
订阅消息
- observe 生命周期感知,不需要手动取消订阅
LiveDataBus.get() .with("key_name", String.class) .observe(this, new Observer<String>() { @Override public void onChanged(@Nullable String s) { } });
- observeForever 需要手动取消订阅
LiveDataBus.get() .with("key_name", String.class) .observeForever(observer);
LiveDataBus.get() .with("key_name", String.class) .removeObserver(observer);
发送消息
- setValue 在主线程发送消息
LiveDataBus.get().with("key_name").setValue(value);
- postValue 在后台线程发送消息,订阅者会在主线程收到消息
LiveDataBus.get().with("key_name").postValue(value);
Sticky模式
支持在注册订阅者的时候设置Sticky模式,这样订阅者可以接收到订阅之前发送的消息
- observeSticky 生命周期感知,不需要手动取消订阅,Sticky模式
LiveDataBus.get() .with("sticky_key", String.class) .observeSticky(this, new Observer<String>() { @Override public void onChanged(@Nullable String s) { } });
- observeStickyForever 需要手动取消订阅,Sticky模式
LiveDataBus.get() .with("sticky_key", String.class) .observeStickyForever(observer);
LiveDataBus.get() .with("sticky_key", String.class) .removeObserver(observer);
示例和DEMO
基本功能
Sticky模式
一个简单的应用,发消息关闭所有activity
简单的Demo可参见:LiveDataBusDemo.java
文档
LiveDataBus实现原理
LiveDataBus的实现原理可参见作者在美团技术博客上的博文: Android消息总线的演进之路:用LiveDataBus替代RxBus、EventBus
其他
- 欢迎提Issue与作者交流
- 欢迎提Pull request,帮助 fix bug,增加新的feature,让LiveDataBus变得更强大、更好用
More Open Source by JeremyLiao
- tensorflow-lite-sdk 一个更加通用的Tensorflow-Lite Android SDK
- MessageBus 一个android平台的基于订阅-发布模式的消息框架,支持跨进程消息通信
- persistence 一个android平台的key-value storage framework
- LightRxAndroid 另辟蹊径,利用Android Handler实现了一个类似RxJava的链式框架
- rxjava-retry 封装了几个处理RxJava Retry操作的类


