我想使用协程而不是处理程序。我有电话会每隔几秒钟刷新一次数据。它在 Job
对象中调用。当我将应用程序留在后台时,我想取消此 Job
。当我回到应用程序时,我想重新启动这项工作来完成它的工作。
但是一旦我取消作业,它就不会再重新启动。有什么办法可以重新启动取消的工作?因为 isActive == false
即使我重新初始化变量
var job: Job? = null
job = launch {
while (isActive){
delay(5000)
doStuff()
}
}
当我暂停我的 Activity 时,我调用 job?.cancel()
和 job = null
当我进入Activity时,我会再次调用上面的代码。我想我可以重新初始化这项工作并再次启动刷新代码。
最佳答案
无法重新启动 cancel()
编辑的作业。但这很容易解决。而是开始一份新工作。你可以这样做:
fun launchNewJob() = launch {
while (isActive) {
delay(5000)
doStuff()
}
}
job = launchNewJob()
Job
s/coroutines 不像 Thread
s 这样沉重的对象,所以你不必担心创建新的。
关于android - 如何重新启动已取消的作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58341909/