【发布时间】:2018-09-20 15:04:41
【问题描述】:
我使用 MVVM 架构,我的数据层/存储库使用 RxJava,但视图模型到视图层使用 LiveData。
在我的视图模型中,我使用 rxjava Observable.interval 轮询服务器。
目前我的问题是当底层视图(片段)进入暂停状态时如何暂停轮询?
如果我删除 rxjava 到 liveData 的转换并直接在视图中观察 rxjava,会不会让事情变得更容易?
public class MyViewModel extends ViewModel {
private final CompositeDisposable disposables = new CompositeDisposable();
private final MediatorLiveData<Resource<DataItem>> dataItems = new MediatorLiveData<>();
MyViewModel(...) {
disposables.add(Observable.interval(0, 10, TimeUnit.SECONDS) // How to pause this?
.observeOn(AndroidSchedulers.mainThread())
.doOnNext(n -> loadData())
.subscribe());
}
void loadData() {
disposables.add(dataRepository.getData()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnSubscribe(__ -> dataItems.setValue(Resource.loading()))
.subscribe(dataResp -> dataItems.setValue(Resource.success(dataResp)),
throwable -> dataItems.setValue(Resource.error(throwable))));
}
// This is observed by view
LiveData<Resource<DataItem>> getDataItems() {
return dataItems;
}
}
【问题讨论】:
标签: android mvvm rx-java2 android-livedata