Android开发Android 三方库Android

LiveEventBus的使用

2020-12-02  本文已影响0人  i小灰

一、前言:

LiveEventBus是一款Android消息总线,基于LiveData,具有生命周期感知能力,支持Sticky,支持AndroidX,支持跨进程,支持跨APP。

为什么要用LiveEventBus?

1、生命周期感知
2、范围全覆盖的消息总线解决方案
3、 更多特性支持

4、 常用消息总线对比
消息总线 延迟发送 有序接收消息 Sticky 生命周期感知 跨进程/APP 线程分发
EventBus
RxBus
LiveEventBus

想了解更多?请点击:全面了解Android消息总线

demo下载:https://github.com/JeremyLiao/LiveEventBus.git

二、使用:

1、依赖:

Via Gradle:

implementation 'com.jeremyliao:live-event-bus:1.7.2'

For AndroidX:

implementation 'com.jeremyliao:live-event-bus-x:1.7.2'

2、订阅消息

LiveEventBus
    .get("some_key", String.class)
    .observe(this, new Observer<String>() {
        @Override
        public void onChanged(@Nullable String s) {
        }
    });

LiveEventBus
    .get("some_key", String.class)
    .observeForever(observer);

3、发送消息

LiveEventBus
    .get("some_key")
    .post(some_value);

//定义类型
public class DemoEvent implements LiveEvent {
    public final String content;

    public DemoEvent(String content) {
        this.content = content;
    }
}
//发送消息
LiveEventBus
        .get(DemoEvent.class)
        .post(new DemoEvent("Hello world"));

4、在Application.onCreate方法中配置:

  LiveEventBus
             .config()
             .autoClear(true)
             .lifecycleObserverAlwaysActive(true);

三、详细使用文档

1、 获取Observable

Observable<T> get(@NonNull String key, @NonNull Class<T> type)

Observable<Object> get(@NonNull String key)

<T extends LiveEvent> Observable<T> get(@NonNull Class<T> eventType)

2、 消息发送

进程内发送消息
void post(T value)

App内发送消息,跨进程使用
void postAcrossProcess(T value)

App之间发送消息
void postAcrossApp(T value)

进程内发送消息,延迟发送
void postDelay(T value, long delay)

进程内发送消息,延迟发送,带生命周期
void postDelay(LifecycleOwner sender, T value, long delay)

进程内发送消息,有序发送
void postOrderly(T value)

以广播的形式发送一个消息
void broadcast(T value, boolean foreground, boolean onlyInApp)

3、 消息订阅

以生命周期感知模式订阅消息
void observe(@NonNull LifecycleOwner owner, @NonNull Observer<T> observer)

以Forever模式订阅和取消订阅消息
void observeForever(@NonNull Observer<T> observer)

取消订阅消息
void removeObserver(@NonNull Observer<T> observer)

Sticky模式订阅消息
void observeSticky(@NonNull LifecycleOwner owner, @NonNull Observer<T> observer)

Sticky模式Forever订阅消息
void observeStickyForever(@NonNull Observer<T> observer)

4、 跨进程消息

支持对基本数据类型消息的跨进程发送
  1. int
  2. float
  3. long
  4. boolean
  5. double
  6. String
支持Serializable和Parcelable类型消息的跨进程发送
支持Bean类型消息的跨进程发送
@IpcConfig(processor = GsonProcessor.class)

支持自定义扩展

5、 配置

在Application.onCreate方法中配置:

LiveEventBus
        .config()
        ...

更多配置信息,请点击:LiveEventBus的配置

6、混淆规则

-dontwarn com.jeremyliao.liveeventbus.**
-keep class com.jeremyliao.liveeventbus.** { *; }
-keep class android.arch.lifecycle.** { *; }
-keep class android.arch.core.** { *; }

for androidx:

-dontwarn com.jeremyliao.liveeventbus.**
-keep class com.jeremyliao.liveeventbus.** { *; }
-keep class androidx.lifecycle.** { *; }
-keep class androidx.arch.core.** { *; }


参考:LiveEventBus

上一篇下一篇

猜你喜欢

热点阅读