我有一个重复的观察,但是当它处理它时,例如当我移动到另一个屏幕时,它会继续在后台重复吗?
我很乐意将其处理掉,因为我已经停止了代码并确认它已经发生了。我也很肯定它没有重新启动,因为一旦我移动到新屏幕,该功能永远不会被再次调用。
起初我以为它会停止,但经过一些阅读后,听起来重复可能是在一次性I&m; m清除之外,所以我尝试在if语句中添加if / else
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)
当我打电话给一次性电话,拨打电话并切换屏幕时,如何停止播放?
注意 - observable是泛型类型,所以我需要在执行Observable.empty()时添加一个类型
更新:看起来问题出在我的代码中的其他地方。当我尝试处理它时,我的tickerDisposable的大小是空的,因此它不会停止呼叫。如果我找到了它应该解决的问题。
答案 0 :(得分:0)
所以我不确定我理解为什么这会解决问题,但以下解决了它。
最初我的处理呼叫发生在onStop()上。当我关闭应用程序时,我注意到我的处理调用有效,但是当我启动新活动时,它无法正常工作。
我尝试将dispose移动到我的onPause上,想象一下,当onStop调用一次性中的引用时,可能会丢失,现在它可以正常工作。
这可能是我的回购设置如何设置的副作用?我必须进一步调查,但这就是错误的。