当前位置:   article > 正文

Kotlin:lifecycleScope与GlobalScope以及MainScope的区别,详细分析为什么在Android中推荐使用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"

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

GlobalScope

GlobalScope继承自CoroutineScope。
kotlin协程标准库里面是没有MainScope以及lifecycleScope这些花里胡哨的东西的

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/495674
推荐阅读
相关标签