RxJava - Повторите, когда не отменять после утилизации? - PullRequest
0 голосов
/ 05 мая 2018

У меня есть наблюдаемое повторение, но когда приходит время избавиться от него, например, когда я перехожу на другой экран, оно продолжает повторяться в фоновом режиме?

Я уверен, что от него избавились, так как я остановил код и подтвердил, что это происходит. Я также уверен, что он не перезапускается, так как функция больше не вызывается после перехода на новый экран.

Сначала я подумал, что это просто остановится, но после некоторого прочтения кажется, что повтор может быть за пределами одноразового использования, которое я очищаю, поэтому я попытался добавить его, если / еще, в выражении повторения когда.

 observable.observeOn(AndroidSchedulers.mainThread())
                .repeatWhen { result ->
                    if(!disposable.isDisposed) {
                        result.delay((20000 + delay), TimeUnit.MILLISECONDS)
                    }else {
                        Observable.empty<Int>()
                    }
                }
                .subscribeOn(Schedulers.io())
                .subscribe({ result ->
                    //Do something
                }, { error ->          
                    error.printStackTrace()
                }).addTo(tickerDisposables)

Как мне сделать эту остановку, когда я вызываю call disables.dispose и переключаю экраны?

Примечание. Наблюдаемый является универсальным типом, поэтому мне нужно добавить тип при выполнении Observable.empty ()

Обновление: похоже, проблема в другом месте моего кода. Размер моего tickerDisposable к тому времени, когда я пытаюсь его утилизировать, пуст, поэтому он не останавливает вызовы. Если я найду, где это, это должно решить проблему.

1 Ответ

0 голосов
/ 06 мая 2018

Так что я не уверен, что понимаю, почему это решает проблему, но следующее решило ее.

Первоначально мой вызов dispose происходил в onStop (). Я заметил, что мой вызов dispose работал, когда я закрывал приложение, но он не работал, когда я запускал новое действие.

Вместо этого я попытался переместить dispose в свой onPause, полагая, что, возможно, к тому времени, когда onStop вызвал ссылки в одноразовом каталоге, были потеряны, и теперь он работает должным образом.

Это может быть побочным эффектом от настройки моих репо? Мне пришлось бы продолжить расследование, но это было неправильно.

...