我使用协程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((