LiveDataBus的整个实现就一个类,不超过150行代码。不需要过于繁杂的功能,简单好用,就是最好的:)
- 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);
- set模式 订阅者会在当前线程收到消息
LiveDataBus.get().with("key_name").setValue(value);
- post模式 订阅者会在主线程收到消息
LiveDataBus.get().with("key_name").postValue(value);
简单的Demo可参见:LiveDataBusDemo.java
LiveDataBus的实现原理可参见作者在美团技术博客上的博文: Android消息总线的演进之路:用LiveDataBus替代RxBus、EventBus
- 欢迎提Issue与作者交流
- 欢迎提Pull request,帮助 fix bug,增加新的feature,让LiveDataBus变得更强大、更好用