跳至主要內容

关键点

guodongAndroid小于 1 分钟

  • 协程的所有信息都包含在 CoroutineContext 及其 CoroutineContext.Elements 中。
  • 有三个主要的协程上下文元素:首先是具有生命周期定义并且可以取消的 Job,然后是可以处理协程异常的 CoroutineExceptionHandler,最后是处理协程函数执行流程和执行线程的 ContinuationInterceptor
  • 每一个协程上下文元素都实现了 CoroutineContext
  • ContinuationInterceptors 负责线程的切换。主线程和后台线程是通过 Dispatchers 提供的。
  • 你可以使用 +/plus 操作符组合不同的 CoroutineContexts 以及它们的 Elements,从而有效的合并它们的元素。
  • 一个好的实践是构建一个 CoroutineContext 提供器,因此你就不会依赖明确的上下文。
  • 你可以通过 CoroutineContextProvider 提供复杂的上下文,比如:自定义的异常处理器,具有生命周期的协程或者线程机制。
  • CoroutineContextProvider 在测试中非常有用,因为你可以提供特定于测试环境的上下文。