一、基本介绍

  • 定义了新启动的协程的生命周期边界。它持有自己的CoroutineContext

  • 重要性:通过作用域可以跟踪和管理其内部所有协程。当作用域被取消时,其内部所有正在运行的协程都会被自动取消,有效防止协程泄漏

  • 常用作用域

    • GlobalScope:全局作用域,生命周期与整个应用一致,一般不推荐使用。
    • lifecycleScope (在androidx.lifecycle:lifecycle-runtime-ktx中):每个LifecycleOwner(如Activity/Fragment)都有。当Lifecycle销毁时,该作用域内的协程自动取消。
    • viewModelScope (在androidx.lifecycle:lifecycle-viewmodel-ktx中):每个ViewModel都有。当ViewModel被清除时,其内部的协程自动取消。
    • MainScope:它是一个顶层函数,调用后返回一个协程作用域 (CoroutineScope) 对象。这个作用域默认运行在 主线程 (Dispatchers.Main),并且其内部的 Job 是一个 SupervisorJob,意味着一个子协程的失败不会影响其他子协程 。需要手动管理生命周期
  • 协程作用域构建器runBlocking
    它创建了一个协程作用域。在这个作用域内部,可以直接调用 launch 函数,因为 launch 是 CoroutineScope 的扩展函数。

  • 已取消的作用域无法再创建协程

二、基本使用


0 条评论

发表回复

您的电子邮箱地址不会被公开。