在多活动中将 LiveData 替换为 EventBus

Lon*_*ger 5 java android greenrobot-eventbus android-livedata android-architecture-components

目前我的项目使用 EventBus 来发布事件,我正在尝试用 EventBus 替换 LiveData。理论上,它们的工作原理类似。一开始我迁移时没有任何痛苦。但出现了一个我不知道如何处理的情况。

这是场景。

LaunchActivity -> PersonInfoActivity -> UpdateInfoActivity

目前我们在LaunchActivity和PersonInfoActivity中使用EventBus订阅UserInfoEvent

LaunchActivity.java

public class LaunchActivity{
     @Subscribe(threadMode = ThreadMode.MAIN)
     public void onEvent(UserInfoEvent event){

     }
}
Run Code Online (Sandbox Code Playgroud)

PersonInfoActivity.java

public class PersonInfoActivity{
     @Subscribe(threadMode = ThreadMode.MAIN)
     public void onEvent(UserInfoEvent event){

     }
}
Run Code Online (Sandbox Code Playgroud)

更新信息活动.java

public class UpdateInfoActivity{
     public void onSubmit(){
          EventBus.getDefault().post(new UserInfoEvent());
     }
}
Run Code Online (Sandbox Code Playgroud)

而问题是,我想用LiveData来代替这个场景

我做了什么?

我读过有关 livedata Room 的单例使用的问题 - LiveData 观察者在数据库更新时不会触发,我想尝试使用相同的方式但没有运气。onChanged()每次当我开始活动时,事件都会触发

Anu*_*lla 2

我认为对于 LiveData 有一些误解。你可以在这里看看

它可能对您有帮助。您也可以使用 LiveData事件总线与 liveData检查事件总线实现

希望能帮助到你!!!