Android Kotlinandroid开发学习js css html

Kotlin 协程学习教程之通俗易懂篇

2022-06-16  本文已影响0人  Kael_Zhang的安卓笔记

引言

协程并非Kotlin独有的,协程的概念在很早很早之前就有了,目前也有很多语言支持协程,本文以什么是协程、Android开发时如何使用协程为探讨重点,并不涉及非常深入的探讨。

什么是进程

进程大抵等于APP的启动实例

什么是线程

线程属于进程,是最小的任务执行单位,一个进程有且只有一个主线程(在Android上就是UI线程)、若干子线程

什么是并发、异步

并发就是进程同一时间并行处理多个任务,异步是处理并发的方式

什么是协程

java处理并发时必须切换线程,线程是最小任务执行单位,并发时必须多个线程来处理
Kotlin中的协程提供了一种全新处理并发的方式(无需切换线程),轻量级的线程,可以使用它来简化异步执行的代码,它的目的就是在保证主线程(在Android上就是UI线程)安全的基础上处理耗时任务

协程的特点

为什么使用协程

什么是suspend(协程的核心)

被suspend标记的函数称为可挂起函数,此类函数必须在协程中或者另外一个suspend标记的函数中调用,协程代码块中遇到suspend函数,会将该函数挂起执行(可以理解为当前线程中虚拟一个子线程来执行挂起函数=异步,并没有切换线程也不会阻塞当前线程),挂起函数执行完毕以后,继续执行剩余协程代码块中代码,这是协程实现异步的核心!
GlobalScope.launch是开启协程的一种方式,后面会讲到协程的用法,这里仅为理解suspend函数之用

fun test() {
    GlobalScope.launch {
        val ret= sf1()
        Log.d...... //log2 thread name
    }
    Log.d......// log3 thread name
}
suspend fun sf1():Int{
  delay(2000)
  Log.d......// log1 thread name
  //todo
}

如何使用

lifecycleScope.launch{
  val io = async(Dispatchers.IO){
    //网络请求
    //IO线程
  }
  io.await()
  //主线程
  //刷新UI
}

总结

通俗的表达:协程异步就是将耗时的函数标记为suspend,并在协程中调用!本文并没有大量的示例代码,若有疑问可以自己码一下或者留言讨论,谢谢!

上一篇 下一篇

猜你喜欢

热点阅读