协程的难点

  1. 新概念

  2. 不同编程语言,对协程的实现不同。

  3. 对线程基础不牢。

协程是什么?

协程基于线程,它是轻量级的线程。

为什么它不是作为一个框架存在呢?Kotlin协程需要编译器,通常我们不称它为框架。

在Android中解决的问题

  1. 处理耗时任务

  2. 保证主线程的安全

  3. 异步逻辑同步化,防止回调地狱。

协程的基础设施层和业务框架层

  • 基础设施层

    • 比如NIO,提供基础API。

  • 业务框架层

    • 比如Netty。

基础设施层

suspend{
    5
}.createCoroutine(object:Co)

协程的调度器

结构化并发机制

任务泄露问题,为了解决任务泄露问题,协程引入了结构化并发机制。

结构化并发:

  • 取消任务

  • 追踪任务

  • 异常处理

相关API:

  • GlobalScope

  • MainScope

  • ViewModelScope

  • lifeCycleScope