目录
1.协程是什么?
2.为什么需要协程?解决了什么问题?
3.概括一下协程的几个常用概念?
4.协程的几个最常用的方法是什么?
5.实战使用场景示例
1.协程是什么?
背一句话:协程是一个轻量级的线程框架,能够用同步的代码写出异步的逻辑,并且不会阻塞线程
2.为什么需要协程?
例如以前的网络请求与更新UI数据的代码,会出现大量的回调地狱

image.png
而使用协程之后:可以在IO线程中执行网络请求,能自动切换主线程 然后更新UI

image.png
3.概括一下协程的几个概念
作用域 GlobalScope lifecycleScope viewModelScope 然后.launch{ }
调度器 Dispatchers IO Main Default
suspend 挂起函数
4.使用方法
① 在Activity 和Fragment中:lifecycleScope.launch{} 开启协程 作用域
② 使用withContext(Dispatchers.IO){} 来切换到IO线程中,处理耗时操作
③ 使用withContext(Dispatchers.Default){} 切换到default线程做复杂计算
④ suspend 挂起函数标记, 用suspend 标记网络请求、数据库请求 等函数
⑤ 为了什么?提醒开发者 这个函数是耗时操作 可以被协程挂起,暂停
⑥ delay(2000)等待2秒, delay不会像sleep那样阻塞线程, 可以等两秒后执行后续的
ps:慎用GlobalScope,因为它没绑定生命周期,容易造成内存泄漏
ps:runBlocking一般在测试中用,Android开发中很少使用,会阻塞线程
5.实战的场景

image.png

image.png

image.png

image.png

image.png