博文

Kotlin:lifecycleScope与GlobalScope以及MainScope的区别,详细分析为什么在Android中推荐使用lifecycleScope!

目录 简要 GlobalScope MainScope() lifecycleScope lifecycleScope 剩余问题分析(感兴趣的可以继续看) 简要 首先简要介绍一下 kotlin 协程作用域的三种类型。 类型 产生方式 异常传播特征 顶级作用域 GlobalScope 创建 异常不向外传播。异常到达顶级作用域后,如果还没有被处理,会抛给当前的 exceptionHandler ,如果没有则给当前线程的 uncaughtExceptionHandler 协同作用域 Job 嵌套、 coroutineScope 创建 异常双传播。异常会向上向下双向传播。 主从作用域 可通过 supervisorScope 创建,另外 MainScope 和 lifecycleScope 内部设置了 异自上而下单项传播。父协程不去受理子协程产生的异常。但是一旦父布局出现了异常,则会直接取消子协程。 相关引用, kotlin 协程库这里使用的版本是: 1.4.2 , 可点击查看了解目前自己当前 kotlin 版本对应的协程库版本 。 project.ext.kotlin_coroutines_version = "1.4.2" //kotlin 协程标准库   GlobalScope implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlin_coroutines_version" //kotlin 协程 Android 支持   MainScope() implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$kotlin_coroutines_version" //lifecycle implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.3.0" GlobalScope GlobalScope 继承自 CoroutineScope 。 kotlin 协程标准库里面是没有 MainScope 以及 lifecycleScope 这些花里胡哨的东西的 😯 ,一般使用 GlobalS...