RxJava вызов одноразовой утилизации () - PullRequest
0 голосов
/ 08 сентября 2018

Я использую rxjava с модификацией. В следующем коде subscribeOn () и наблюдаем () продолжает работать. Приложение завершается и запускается само по себе постоянно.

disposable = api.getUsers("135")
                .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe({
                users -> showResult(users)
            })

Если я распоряжусь сразу после вышесказанного, он не получит полные данные. Поэтому мой вопрос заключается в том, когда утилизировать одноразовые или как узнать, когда subseOn () и наблюдаем () завершил свою задачу.

1 Ответ

0 голосов
/ 08 сентября 2018

либо вы можете dispose в onDestroy() вашего Activity.

или вы можете использовать DisposableSingleObserver навсегда, например:

Disposable disposable = yourApi.subscribeWith(new DisposableSingleObserver<List<String>>() {

        @Override
        public void onSuccess(List<String> values) {
            // work with the resulting values
        }

        @Override
        public void onError(Throwable e) {
            // handle the error case
        }
    });

и затем после использования результата (в этом примере, когда вам больше не нужны значения (ответ API), вы можете вызвать dispose

    disposable.dispose();

лучшее место для размещения наблюдателя будет в onDestory(), это место, где вам больше не понадобится результат API:

protected void onDestroy(){
    super.onDestroy();
    disposable.dispose();
}
...