У меня есть одноразовый, который через какой-то промежуток времени выполняет запрос к API
val disposable =
Flowable.interval(0, UPDATE_INTERVAL, TimeUnit.MILLISECONDS)
.map {
someRepository.sync(id)
.doOnSubscribe { disposables?.add(it) }
.subscribe()
}
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnError { Timber.e(it, "Unable to sync") }
.subscribe()
disposables?.add(disposable)
Я пытаюсь очистить его внутри метода onBackPressed:
override fun onBackPressed() {
super.onBackPressed()
disposables?.dispose()
}
Однако это не очищается, и я вижу в Android Studio Profiler, что он все еще выполняет этот Flowable после того, как я нажал кнопку «Назад».
Что я делаю неправильно?
ОБНОВИТЬ:
Когда я меняю оператора карты на flatMap, как предложил akarnokd:
Error:(160, 11) Type inference failed: fun <R : Any!> flatMap(p0:
((Long) -> Publisher<out R!>!)!, p1: Int): Flowable<R!>!
cannot be applied to
((Long) -> Completable,Int)
sync
, если он занимает больше времени, чем интервал времени. 20.04.2018