一、基本介绍
-
定义了新启动的协程的生命周期边界。它持有自己的
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 条评论