CoroutineContext

代表协程的上下文,是协程执行环境的不可变集合。

CoroutineContext 是一个包含多个配置元素的索引集合(类似于 Map),它共同定义了协程的行为。 每个元素都有一个唯一的 Key。主要的标准元素包括:

  • Job: 控制协程的生命周期,实现父子协程的结构化并发。

  • CoroutineDispatcher: 决定协程在哪个线程或线程池上执行。

  • CoroutineName: 为协程指定一个用于调试的名称。

  • CoroutineExceptionHandler: 处理未被捕获的顶层异常。

您可以在创建协程作用域(Coroutines.newScope)或启动新协程(CoroutineScope.launch / CoroutineScope.async)时, 通过一个配置块来定制这个上下文。上下文可以通过 + 操作符进行组合。

Functions

Link copied to clipboard

对 ObjectWrapper 调用给定的 block 函数,并返回 ObjectWrapper 本身。

Link copied to clipboard

对 ObjectWrapper 调用给定的 block 函数,并返回 ObjectWrapper 本身。

Link copied to clipboard
abstract fun getContext(): ScriptContext

获取脚本上下文对象 ScriptContext.

Link copied to clipboard
abstract fun getName(): String?

获取当前上下文中设置的协程名称。

Link copied to clipboard
abstract fun getOrigin(): CoroutineContext

获取原始的对象.

Link copied to clipboard
abstract fun <R> let(block: (CoroutineContext) -> R): ObjectWrapper<R>?

对 ObjectWrapper 调用给定的 block 函数,并返回 block 函数的结果包装在 ObjectWrapper 中。

Link copied to clipboard
abstract fun newJob(parent: Job?): Job

创建一个新的标准 Job 实例。

Link copied to clipboard
abstract fun newSupervisorJob(parent: Job?): Job

创建一个新的具有监督(Supervisor)特性的 Job

Link copied to clipboard
abstract fun <R> run(block: CoroutineContext.() -> R): ObjectWrapper<R>?

对 ObjectWrapper 调用给定的 block 函数,并返回 block 函数的结果包装在 ObjectWrapper 中。

Link copied to clipboard
abstract fun setDispatcher(dispatcherBuilder: (CoroutineDispatchers) -> CoroutineDispatcher?)

设置此上下文中的协程调度器(CoroutineDispatcher)。

Link copied to clipboard
abstract fun setExceptionHandler(handler: (CoroutineContext, Throwable) -> Unit?)

设置一个用于处理未捕获异常的处理器。

Link copied to clipboard
abstract fun setJob(job: Job?)

为此上下文设置一个特定的 Job 实例。

Link copied to clipboard
abstract fun setName(name: String?)

为此上下文中的协程设置一个用于调试的名称。

Link copied to clipboard
abstract fun setOrigin(origin: CoroutineContext)

设置原始对象

Link copied to clipboard

如果 ObjectWrapper 满足给定的 predicate,则返回 ObjectWrapper 本身,否则返回 null 包装在 ObjectWrapper? 中。

Link copied to clipboard

如果 ObjectWrapper 不满足给定的 predicate,则返回 ObjectWrapper 本身,否则返回 null 包装在 ObjectWrapper? 中。