协程是什么?
协程本质是Kotlin官方提供的线程API(本质就是一个线程框架)
最基本的功能是并发
非阻塞式挂起 用同步的方式写异步的代码
协程指的是传递给lauch函数的那些代码。
lauch函数的意思是我要创建一个协程,并在指定线程上运行协程。
lauch(Dispatchers.IO) {
val image = getImage(url)
}
withContext函数,切到对应线程执行,执行完毕之后自动切回来
lauch(Dispatchers.Main) {
withContext(Dispatchers.IO) {
//..
}
//..
withContext(Dispatchers.IO) {
//..
}
//..
}//也可以包在函数之外处理
lauch(Dispatchers.Main) {
val result = getResult(url)
//..
}
suspend fun getResult(url : String) {
withContext(Dispatchers.IO) {
//..
}
}
【Kotlin协程】协程写法上和普通代码顺序一样
suspend关键字 提醒的作用(函数创建者对函数使用者的提醒,这是一个耗时的函数)
1.耗时的操作需要定义挂起函数
2.函数里面的代码用withContext去包裹代码
非阻塞式挂起 挂起就是一个稍后会自动切回来的线程调度操作
协程的本质还是线程
在协程中可以用看起来是阻塞的代码写出非阻塞的操作
挂起函数挂起的是协程,保证协程后面的代码在进入挂起函数之后,就被挂起,不会继续往下执行,只有等到挂起函数执行完毕之后才会继续往下执行。挂起函数保证了协程内部的顺序执行。