定义 CoroutineScope 时,Dispatcher.IO + job 到底发生了什么?

Ali*_*ani 7 coroutine kotlin kotlin-coroutines

我在我的项目中使用Coroutine并定义了一个类CoroutineScope来处理Coroutines差异,Dispatchers例如IOMAIN...但我不明白这段代码如何工作以及它的机制是什么?

val job = Job()

override val coroutineContext: CoroutineContext
     get() = Dispatchers.IO + job
Run Code Online (Sandbox Code Playgroud)

什么意思Dispatchers.IO + job

Ami*_*mir 8

通过 Dispatchers.IO 使用指定作业的优点是您可以随时取消该作业,而不会影响 IO Dispatcher 中启动的其他作业。您只需致电job.cancel()

例如,您发出一个网络请求,当它以某种方式运行时,您发现网络已关闭(例如,如果在 Android 中,则来自 BroadCastReciever),那么您可以取消该网络作业。但请记住,如果工作被取消或完成,您始终必须创建新工作