【发布时间】:2019-06-13 11:35:48
【问题描述】:
接下来的问题是,我订阅了 LiveData 活动的变化,并且第一次在观察者中获取所有数据,但是当我开始另一个活动然后返回此活动时,观察者没有被调用。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
viewModel = ViewModelProviders.of(this, viewModelFactory).get(MainMenuViewModel.class);
observeViewModel();
}
@Override
protected void onResume() {
super.onResume();
viewModel.loadUserEntry();
}
public void observeViewModel() {
viewModel.getUser().observe(this, userEntry -> {
// Do some code
});
}
这是我的 ViewModel 的代码
void loadUserEntry() {
disposable.add(userRepository.getUser()
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(user::setValue, Throwable::printStackTrace));
}
public LiveData<UserEntry> getUser() {
return user;
}
所以我测试并一直订阅我有用户价值,然后我将此值设置为 LiveData。
如果有人可以提供帮助,我将不胜感激。谢谢。
【问题讨论】:
-
你能分享一下你的 setValue() 方法吗
-
@RishabhJain 这个扩展的lambda一次性.add(userRepository.getUser() .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(value -> userLiveData.setValue( value), Throwable::printStackTrace));
-
你定义了观察者吗? onChang 函数在哪里?检查这个:developer.android.com/topic/libraries/architecture/…
-
也许一次性已经被丢弃了?你能显示你的
disposable的处理逻辑吗?
标签: android android-lifecycle android-architecture-components android-livedata android-jetpack