而在Coroutine LiveData中为true



我使用协程livedata每4秒做一些事情。这是我使用的代码

val reloadInterval: MutableLiveData<Long> = MutableLiveData()
val data = reloadInterval.switchMap { delay ->
liveData(Dispatchers.IO) {
while (true) {
delay(delay)
emit(data)
}
}
}
fun reloadInterval(interval: Long) {
reloadInterval.value = interval
}

所以我的问题是,当我更改reloadInterval值时,switchMap流会被触发并返回一个新的livedata,那么旧的livedata会继续运行还是会自动停止?

liveData {协程生成器的block仅在LiveData处于活动状态时执行。块运行程序在给定的超时时间(默认为5秒(后被取消。

因此while(true) {将在5秒后停止。您可以传递liveData(timeoutInMs = 0) {以立即终止循环。

只要您不保留对旧livedata的订阅,它就应该处于非活动状态。有关的更多信息,请参阅LiveData.oInactive((

最新更新