Kotlin-协程-看完这一篇还不懂,我倒立吃X,脑白金泡澡!(1)

本文详细介绍了Kotlin协程在实际开发中的应用,包括如何使用Retrofit结合协程处理网络请求,展示了如何提升代码的效率和避免回调地狱。文章通过实例演示了协程的用法,如在主线程中启动协程,后台执行耗时操作,以及协程如何简化并发处理。此外,还探讨了在线项目中如何安全地使用协程,并提供了关于Kotlin协程学习资源的推荐。
摘要由CSDN通过智能技术生成

}

依次类推,我们可以想到,如果请求很多的话,第一 代码结构会很难看,第二 写着写着就很乱了,那么协程就可以很好的解决这个问题,下面我们来看使用协程的方式 怎么写.

首先,对于一个耗时的操作,我们需要将他切换到后台线程执行,withContext函数可以构建一个协程作用域,他必须在挂起函数或者协程中执行,suspend关键字是kotlin为我们提供的 用于标记挂起函数的关键字。我们修改getMessageFromNetwork方法如下:

/**

  • 从服务器取信息
    */
    private suspend fun getMessageFromNetwork(): String {

var name = “”
withContext(Dispatchers.IO) {
for (i in 0…1000000) {
//这里模拟一个耗时操作
}

name = “Huanglinqing1111”
}

return name
}

在onCreate中协程中直接这样写:

GlobalScope.launch(Dispatchers.Main) {
var name = getMessageFromNetwork()
showMessage(name)
}

运行结果如下所示:

如果我们有多个请求呢,那就再多加几个

GlobalScope.launch(Dispatchers.Main) {
var name = getMessageFromNetwork()
showMessage(name)
var name1 = getMessageFromNetwork()
showMessage(name1)
var name2 = getMessageFromNetwork()
showMessage(name2)
}

这样getMessageFromNetwork在后台执行,showMessage在前台执行,由此看来。

协程比线程的优势在什么地方?

1、协程可以帮我们自动切线程

2、摆脱了链式回调的问题

Retrofit 如何使用协程

从Retrofit2.6.0开始,retrofit就自动支持协程了,这里我们从「聚合数据」上找到一个开放api

我们先来看之前我们怎么使用的,首先在Apiservice中定义一个接口如下:

@GET(“https://wanandroid.com/article/listproject/0/json”)
fun queryData(): Call<BaseReqData>

在activity中添加如下代码:

var retrofit = Retrofit.Builder()
.baseUrl(“http://v.juhe.cn/”)
.addConverterFactory(GsonConverterFactory.create())

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值