Kotlin 协程总结,android工程师要求

本文深入探讨了Kotlin协程在Android开发中的应用,包括添加依赖、启动协程以及suspend函数的使用。文章指出,协程通过非阻塞方式实现线程切换,简化了异步编程,避免了回调地狱。同时,详细解析了挂起的本质,强调suspend关键字作为标记,提醒开发者该函数将在协程中执行。文中还提供了具体的协程使用示例,帮助理解协程如何在Android环境中有效管理生命周期和线程。
摘要由CSDN通过智能技术生成

}

  • 方法一通常适用于单元测试的场景,而业务开发中不会用到这种方法,因为它是线程阻塞的。

  • 方法二和使用 runBlocking 的区别在于不会阻塞线程。但在 Android 开发中同样不推荐这种用法,因为它的生命周期会和 app 一致,且不能取消(什么是协程的取消后面会讲)。

  • 方法三是比较推荐的使用方法,我们可以通过 context 参数去管理和控制协程的生命周期(这里的 context 和 Android 里的不是一个东西,是一个更通用的概念,会有一个 Android 平台的封装来配合使用)。

协程最常用的功能是并发,而并发的典型场景就是多线程。可以使用 Dispatchers.IO参数把任务切到 IO 线程执行:

CoroutineScope(Dispatchers.IO).launch {

}

也可以使用 Dispatchers.Main 参数切换到主线程:

CoroutineScope(Dispatchers.Main).launch{

}

所以在「协程是什么」一节中讲到的异步请求的例子完整写出来是这样的:

CoroutineScope(Dispatchers.Main).launch{ // 在主线程开启协程

val user = api.getUser() // IO 线程执行网络请求

nameTv.text = user.name // 主线程更新 UI

}

而通过 Java 实现以上逻辑,我们通常需要这样写:

api.getUser(new Callback() {

@Override

public void success(User user) {

runOnUiThread(new Runnable() {

@Override

public void run() {

nameTv.setText(user.name);

}

})

}

@Override

public void failure(Exception e) {

}

});

这种回调式的写法,打破了代码的顺序结构和完整性,读起来相当难受。

3.协程具体怎么用

a.添加依赖

//依赖协程核心库

implementation ‘org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.5’

//依赖当前平台所对应的平台库

implementation ‘org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.5’

Kotlin 协程是以官方扩展库的形式进行支持的。我们所使用的「核心库」和 「平台库」的版本应该保持一致。

  • 核心库中包含的代码主要是协程的公共 API 部分。有了这一层公共代码,才使得协程在各个平台上的接口得到统一。

  • 平台库中包含的代码主要是协程框架在具体平台的具体实现方式。因为多线程在各个平台的实现方式是有所差异- 的。

b.开始使用

协程最简单的使用方法,其实在前面章节就已经看到了。我们可以通过一个 launch函数实现线程切换的功能:

CoroutineScope(Dispatch

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值