kotlin协程

Posted 安卓开发-顺

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kotlin协程相关的知识,希望对你有一定的参考价值。

一、子线程与UI线程切换典型场景示例

示例一
GlobalScope.launch(Dispatchers.Main) 
  toast("开始请求,请等待...")
  withContext(Dispatchers.IO)
     log("向后台请求数据")
  
  toast("请求完毕,更新UI...")

示例二
CoroutineScope(Dispatchers.Main).launch 
  //这里是主线程 可以 执行弹出提示框等ui操作
  log("第一步:弹出提示框")
  val progressDialog: ProgressDialog = ProgressDialog(this@LoginActivity)
  progressDialog.setTitle("请等待...")
  progressDialog.show()

  val step2 = withContext(Dispatchers.IO) 
        log("第二步:执行联网请求等耗时操作")
        delay(3000)
        "step2 finish"
  
  log(step2)

  log("第三步:更新UI操作,取消提示框")
  progressDialog.dismiss()


log("写在协程闭包后面的操作")

示例二日志打印如下:

kt===: 写在协程闭包后面的操作
kt===: 第一步:弹出提示框
kt===: 第二步:执行联网请求等耗时操作
kt===: step2 finish
kt===: 第三步:更新UI操作,取消提示框

以上是关于kotlin协程的主要内容,如果未能解决你的问题,请参考以下文章

kotlin 协程万字协程 一篇完成kotlin 协程进阶

kotlin - Coroutine 协程

Kotlin 协程 基本认识

kotlin协程的生命周期与jetpack组件绑定

深潜Kotlin协程(十五):测试 Kotlin 协程

深潜Kotlin协程(十五):测试 Kotlin 协程