Ker*_*ade 7 android asynchronous kotlin kotlin-coroutines coroutinescope
我对协程-调度程序-生命周期范围-异步等待有足够的了解。很明显,所有scope.launch函数都会返回我们可以管理协程生命周期的作业。我唯一无法理解的是我们使用自定义作业创建的自定义范围。
例如:
val myJob = Job()
val customCoroutineScope= CoroutineScope(Dispatchers.IO+myJob)
我认为在这些代码片段之后我可以启动范围并管理它的生命周期和 myJob 引用的内容,但它不起作用。有人可以向我解释一下这个自定义范围的目的和好处吗?
我认为您没有任何理由想要将常规作业传递给 CoroutineScope 构造函数。如果您要传递一项作业,它应该是使用SupervisorJob(). 传递 SupervisorJob 的目的是让 CoroutineScope 启动的协程可以彼此独立地失败,而不是任何单独的失败导致 CoroutineScope 中的所有作业被取消。
没有太多理由保留对 SupervisorJob 的引用并使用它来管理 CoroutineScope。只需从 CoroutineScope 参考中管理您的 CoroutineScope 即可。
创建自定义作用域而不是使用内置作用域(如lifecycleScope、viewModelScope、 或 )的目的GlobalScope是为了控制某些协程的生命周期,这些协程不直接与 Lifecycle 对象(活动或片段)的生命周期相关联,或者一个视图模型。
| 归档时间: |
|
| 查看次数: |
5504 次 |
| 最近记录: |