RxJava, показать обновленный список в onResume деятельности - PullRequest
0 голосов
/ 16 октября 2018

Мне нужно заполнить RecylcerView списком данных, когда начинается активность.Я реализовал это по подписке, где в методе onSuccess я показываю свой список.Но как мне снова показать обновленный список, когда Activity onResume.Я имею в виду, что после переключения на другое действие и затем на возвращение к предыдущему мне нужно снова показать обновленный RecylcerView.Как я могу это реализовать, или мне нужно каждый раз подписываться на показы.Может быть, многократная подписка на одну и ту же наблюдаемую запись в Activity на onResume - плохая практика?

Presenter

@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
}

Activity

@Override
protected void onResume() {
    super.onResume();
    presenter.setCitiesList();
}

Одним словом, как избежать множественной подписки?Мне нужно показывать обновленные города на каждом сайте.

1 Ответ

0 голосов
/ 16 октября 2018

Метод Observable subscribe () возвращает объект Disposable, который вы добавляете в одноразовые.Вызов метода Disposeable dispose () и удаление подписки из ваших одноразовых устройств должно решить эту проблему.

Поскольку вы нацеливаетесь на конкретное одноразовое использование в своем onResume, вероятно, будет удобнее хранить одноразовое использование в качестве независимой переменной экземпляра.

Disposable cityListDisposable;

@Override
public void setCitiesList() {
    cityListDisposable = getCitiesListObservable()
            .subscribe(list -> view.showCitiesList(list));

}

@Override
public void onPause() {
    if (cityListDisposable != null) {
        cityListDisposable.dispose();
    }
}
...