我不明白协程构造函数的语法。
private val uiScope = CoroutineScope(Dispatchers.Main + viewModelJob)
Run Code Online (Sandbox Code Playgroud)
我知道参数需要 Coroutine Context 类。我不明白的是我们如何添加 2 个不同的对象?Dispatchers.Main 类是 MainCoroutineDispatcher,viewModelJob 类是 Job。有什么解释吗?
CoroutineScope 不是构造函数而是函数,定义为:
public fun CoroutineScope(context: CoroutineContext): CoroutineScope = ...
Run Code Online (Sandbox Code Playgroud)
参数是接口CoroutineContext,它本身定义了一个加号运算符:
public operator fun plus(context: CoroutineContext): CoroutineContext = ...
Run Code Online (Sandbox Code Playgroud)
该plus操作返回另一个CoroutineContext。Dispatchers.Main并Job实现接口CoroutineContext。
也就是说, Dispatchers.Main + viewModelJob是调用plusthat 构造了另一个CoroutineContext. 内部这会导致两个实例的集合。
| 归档时间: |
|
| 查看次数: |
217 次 |
| 最近记录: |