Kotlin 协程挂起函数 suspend 关键字

suspend 挂起的是协程

协程是什么

就是launch{

}

or

async{

}

代码块中的东西

使用了suspend 后 就会切换出来一个协程去执行操作。而不是在当前的线程当中

suspend 是暂时切走。等执行完毕后再切回来。

launch(Dispatchers.Main) {
                //切到子线程进行操作
                val repoResponse: Response<FeedBackLists>
                withContext(Dispatchers.IO) {
                    repoResponse = RetrofitClient
                        .instance
                        .getApi()
                        //suspend 挂起的方法必须在携程体内进行调用
                        .getFeedBack(1, 1)
                }
                //还是在主线程
                binding.tvText.text = "repoResponse :${repoResponse.data!!.data[0].content}"
            }

挂起可以理解为开个线程。或者是切个线程,只不过挂起这个函数执行完毕后,协程会自动切回到原先的那个线程。

所以所谓挂起。就是线程切换。这个切回来的操作

在线程当中叫做resume

但是suspend并没有切换线程。

首先自定义一个挂起函数

然后主线程调用

 

 你会发现还是运行在主线程。

 withContext可以切换到子线程

所以说suspend切换线程并不是发生在你外部这个挂起函数被调用的时候。而是withContext被调用的时候

withContext也没有直接切换线程。还在里面

在语法上面suspend关键字有什么用?

提醒,函数的创建者=》使用者的提醒

提醒这个是一个被自动放在后台运行的耗时函数。

这个提醒可以让主线程不卡

什么时候使用suspend关键字

耗时操作如 io、文件读写,网络交互,图片的模糊或者美化处理。

等待情况 如 deley(10000)耗时操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安果移不动

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值