协程简单介绍

1、协程是什么

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

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

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

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

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

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

3、协程的挂起和恢复

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

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

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

4、挂起函数

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

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

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

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

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

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

7、任务泄露

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

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

8、结构化并发

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

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

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

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

9、CoroutineScope

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

常用的相关API 有:

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

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

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

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

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值