我需要在活动开始时用数据列表填充RecylcerView。我通过订阅实现了这一点,在onSuccess方法中,我显示了我的列表。 但是当Activity onResume时如何再次显示更新的列表。我的意思是,切换到另一个活动后又返回上一个活动,我需要再次显示更新的RecylcerView。我该如何实施,或者我需要每次订阅显示。也许在Activity的onResume中对同一观察对象进行多个订阅是一个不好的做法?
演示者
@Override
public void setCitiesList() {
disposables.add(getCitiesListObservable()
.subscribe(list -> view.showCitiesList(list)));
}
private Single<List<City>> getCitiesListObservable() {
Observable<City> citiesFromDb = dataManager.getCitiesFromDb();
return citiesFromDb
.switchMapSingle(city ->
// logic
}
活动
@Override
protected void onResume() {
super.onResume();
presenter.setCitiesList();
}
总而言之,如何避免多次订阅?我需要在每个onResume上显示更新的城市。
答案 0 :(得分:0)
Observable subscription()方法返回要添加到一次性对象的Disposable对象。调用Disposable dispose()方法并从一次性用品中删除订阅即可解决此问题。
由于您要在onResume中定位特定的一次性用品,因此将一次性用品存储为独立实例变量可能更清洁。
Disposable cityListDisposable;
@Override
public void setCitiesList() {
cityListDisposable = getCitiesListObservable()
.subscribe(list -> view.showCitiesList(list));
}
@Override
public void onPause() {
if (cityListDisposable != null) {
cityListDisposable.dispose();
}
}