Android Jetpack-LiveDataBus使用


参考:
https://github.com/JeremyLiao/LiveEventBus

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

LiveEventBus的特点

  1. 生命周期感知,消息随时订阅,自动取消订阅
  2. 支持Sticky粘性消息
  3. 支持AndroidX
  4. 支持跨进程通信
  5. 支持跨APP通信
  6. 支持设置LifecycleObserver(如Activity)接收消息的模式:
    • 整个生命周期(从onCreate到onDestroy)都可以实时收到消息
    • 激活状态(Started)可以实时收到消息,非激活状态(Stoped)无法实时收到消息,需等到Activity重新变成激活状态,方可收到消息

常用消息总线对比

在这里插入图片描述

在工程中引用

Via Gradle:

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

For AndroidX:

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

配置

在Application.onCreate方法中配置:

LiveEventBus
        .config()
        ...
  • supportBroadcast
    配置支持跨进程、跨APP通信,传入Context,需要在application onCreate中配置

  • lifecycleObserverAlwaysActive
    配置LifecycleObserver(如Activity)接收消息的模式(默认值true):

    • true:整个生命周期(从onCreate到onDestroy)都可以实时收到消息
    • false:激活状态(Started)可以实时收到消息,非激活状态(Stoped)无法实时收到消息,需等到Activity重新变成激活状态,方可收到消息
  • autoClear
    配置在没有Observer关联的时候是否自动清除LiveEvent以释放内存(默认值false)

  • setJsonConverter
    配置JsonConverter(默认使用gson)

  • setLogger
    配置Logger(默认使用DefaultLogger)

  • enableLogger
    配置是否打印日志(默认打印日志)

使用方法

以生命周期感知模式订阅消息

  • observe
    具有生命周期感知能力,LifecycleOwner销毁时自动取消订阅,不需要调用removeObserver
LiveEventBus
	.get("key_name", String.class)
	.observe(this, new Observer<String>() {
	    @Override
	    public void onChanged(@Nullable String s) {
	    }
	});

以Forever模式订阅和取消订阅消息

  • observeForever
    Forever模式订阅消息,需要调用removeObserver取消订阅
LiveEventBus
	.get("key_name", String.class)
	.observeForever(observer);
  • removeObserver
    取消订阅消息
LiveEventBus
	.get("key_name", String.class)
	.removeObserver(observer);

发送消息

  • post
    发送一个消息,支持前台线程、后台线程发送
LiveEventBus
	.get("key_name")
	.post(value);
  • postDelay
    延迟发送一个消息,支持前台线程、后台线程发送
LiveEventBus
	.get("key_name")
	.postDelay(value, 1000);

跨进程、跨APP发送消息

  • broadcast
    跨进程、跨APP发送消息,支持前台线程、后台线程发送。需要设置supportBroadcast
LiveEventBus
        .get("key_name")
        .broadcast(value);

以前台队列的形式发送跨进程消息

LiveEventBus
        .get("key_name")
        .broadcast(value, true);

Sticky模式

支持在订阅消息的时候设置Sticky模式,这样订阅者可以接收到之前发送的消息。

  • observeSticky
    以Sticky模式订阅消息,具有生命周期感知能力,LifecycleOwner销毁时自动取消订阅,不需要调用removeObserver
LiveEventBus
        .get("sticky_key", String.class)
        .observeSticky(this, new Observer<String>() {
            @Override
            public void onChanged(@Nullable String s){
            }
        });
  • observeStickyForever
    Forever模式订阅消息,需要调用removeObserver取消订阅,Sticky模式
LiveEventBus
        .get("sticky_key", String.class)
        .observeStickyForever(observer);

混淆规则

-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.** { *; }
发布了383 篇原创文章 · 获赞 54 · 访问量 21万+

猜你喜欢

转载自blog.csdn.net/hongxue8888/article/details/103778327