RxJava,在Activity的onResume中显示更新的列表

时间:2018-10-16 17:30:52

标签: java android rx-java observable rx-java2

我需要在活动开始时用数据列表填充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上显示更新的城市。

1 个答案:

答案 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();
    }
}