Fra*_*oni 1 kotlin kotlin-coroutines
这段代码到底在做什么?
private val supervisorJob = SupervisorJob()
protected val presenterScope = CoroutineScope(Dispatchers.Main + supervisorJob)
Run Code Online (Sandbox Code Playgroud)
结果是什么Dispatchers.Main + supervisorJob?我知道它一定是某种组合,但它是如何工作的呢?它怎么称呼?谢谢
这是很多问题。
这段代码到底在做什么?
您可以如下查看:此代码创建一个新的CoroutineScope,并将调度程序设置为Main和 并将行为设置为SupervisorJob
Dispatchers.Main意味着协程将在主线程上执行。通常这是指 Android UI 线程。
SupervisorJob这意味着与常规Job行为不同,当其中一个孩子的失败也会让父母以及所有其他孩子失败时,工作将照常继续。
Dispatchers.Main +supervisorJob 的结果是什么?
结果是CoroutineContext。您可以将其视为不同键值的哈希图。
我知道它一定是某种组合,但它是如何工作的呢?
你是对的。如果您查看CoroutineContext实现,您会发现它实现了operator fun plus,它允许使用+组合两个类型的对象CoroutineContext
它怎么称呼?
通常协程方法是CoroutineScope. 如果我们看一下async(),例如:
public fun <T> CoroutineScope.async(
context: CoroutineContext = EmptyCoroutineContext,
start: CoroutineStart = CoroutineStart.DEFAULT,
block: suspend CoroutineScope.() -> T
): Deferred<T>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
982 次 |
| 最近记录: |