协程简单介绍

1、协程是什么

协程基于线程,它是轻量级的线程

协程让异步逻辑同步化,杜绝回调地狱

协程最核心的点就是,函数或者一段程序能够被挂起,稍后再在挂起的位置回复

2、协程用来解决什么问题

处理耗时任务,这种任务常常会阻塞主线程

保证主线程安全,即确保安全地从主线程调用任何suspend函数

3、协程的挂起和恢复

常规函数基础操作包括:invoke(或call)和return,协程新增了suspend和resume:

suspend --- 也称为挂起或暂停,用于暂停执行当前协程,并保存所有局部变量

resume---用于让已暂停的协程从起暂停处继续执行

4、挂起函数

使用suspend关键字修饰的函数叫做挂起函数

挂起函数只能在协程体内或其他挂起函数内调用

5、协程实现分为两个层次:

基础设施层,标准库的协程API,主要对协程提供了概念和语义上最基本的支持

业务框架层,协程的上层框架支持

6、所有协程必须在调度器中运行,即使它们在主线程上运行也是如此

协程简单介绍_第1张图片

7、任务泄露

当某个协程任务丢失,无法追踪,会导致内容、CPU、磁盘等资源浪费,甚至发送一个无用的网络请求,这种情况称为任务泄露

为了能够避免协程泄露,Kotlin引入了结构化并发机制

8、结构化并发

使用结构化并发可以做到:

取消任务,当某项任务不再需要时取消它

追踪任务,当任务正在执行时,追踪它

发出错误信号,当协程失败时,发出错误信号表明有错误发生

9、CoroutineScope

定义协程必须指定其CoroutineScope,它会跟踪所有协程,同样它还可以取消由他所启动的所有协程

常用的相关API 有:

GlobalScope,生命周期是process级别的,即使Activity或Fragment已经被销毁,协程仍然在执行

MainScope,在Activity中使用,可以在onDestroy()中取消协程

viewModuleScope,只能在ViewModel中使用,绑定ViewModel的生命周期

lifecycleScope,只能在Activity、Fragment中使用,会绑定Activity和Fragment的生命周期

你可能感兴趣的:(Kotlin,kotlin,android)