定义 CoroutineScope 时 Dispatcher.IO + job 到底发生了什么?
What happen exactly Dispatcher.IO + job when define CoroutineScope?
我在我的项目中使用 Coroutine
并将 class 定义为 CoroutineScope
用于处理 Coroutines
差异 Dispatchers
例如 IO
, MAIN
...
但我不明白这段代码是如何工作的,它的机制是什么?
val job = Job()
override val coroutineContext: CoroutineContext
get() = Dispatchers.IO + job
什么意思Dispatchers.IO + job
?
通过 Dispatchers.IO 使用指定作业的优点是您可以随时取消该作业,而不会影响在 IO 调度程序中启动的其他作业。
您只需调用 job.cancel()
例如,您发出网络请求,当它处于 运行 时,您发现网络已关闭(例如,如果在 android 中,来自 BroadCastReciever),那么您可以取消该网络作业。
但请记住,如果工作被取消或完成,您总是必须创建一个新工作
我在我的项目中使用 Coroutine
并将 class 定义为 CoroutineScope
用于处理 Coroutines
差异 Dispatchers
例如 IO
, MAIN
...
但我不明白这段代码是如何工作的,它的机制是什么?
val job = Job()
override val coroutineContext: CoroutineContext
get() = Dispatchers.IO + job
什么意思Dispatchers.IO + job
?
通过 Dispatchers.IO 使用指定作业的优点是您可以随时取消该作业,而不会影响在 IO 调度程序中启动的其他作业。
您只需调用 job.cancel()
例如,您发出网络请求,当它处于 运行 时,您发现网络已关闭(例如,如果在 android 中,来自 BroadCastReciever),那么您可以取消该网络作业。 但请记住,如果工作被取消或完成,您总是必须创建一个新工作