【发布时间】:2018-11-15 16:56:43
【问题描述】:
abstract class ScopedAppActivity: AppCompatActivity(), CoroutineScope {
protected lateinit var job: Job
override val coroutineContext: CoroutineContext
get() = job + Dispatchers.Main
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
job = Job()
launch(Dispatchers.Main) {
try {
delay(Long.MAX_VALUE)
} catch (e: Exception) {
// e will be a JobCancellationException if the activty is destroyed
}
}
}
override fun onDestroy() {
super.onDestroy()
job.cancel()
}
}
此示例复制自 coroutine guide 并由 launch(Dispatchers.Main) 协程扩展。我不明白为什么需要第 4 行中的+ Dispatchers.Main。如果我删除这部分,launch 协程无论如何都会在 Activity 被销毁的情况下被取消。那么Dispatchers.Main的原因是什么?为什么Dispatchers.IO也没有加?
【问题讨论】:
标签: android kotlin kotlin-coroutines