协程是什么:

协程是Kotlin中有特色的一项技术,大部分编程语言没有协程这个概念。协程可简单理解成轻量级的线程。线程是由系统调度的,线程切换或线程阻塞的开销都比较大。而协程依赖于线程,但是协程挂起时不需要阻塞线程,几乎是无代价的。一个线程内可创建多个协程,协程可在编程语言层面实现不同协程之间的切换,从而在单线程模式下模拟多线程的效果。其中的原理是协程可在某个地方挂起,并且可以重新在挂起处继续运行。而代码执行时的挂起与恢复完全由编程语言控制,与操作系统无关。

协程特点:

轻量

可以在单个线程上运行多个协程,因为协程支持挂起,不会使正在运行协程的线程阻塞。挂起比阻塞节省内存,且支持多个并行操作

内存泄漏更少

用的结构化并发机制能帮助追踪运行在协程中的任务,比如在不需要协程的时候取消任务,协程运行时追踪任务,协程执行失败时传播错误信号

内置取消支持

取消操作会自动在运行中的整个协程层次结构内传播

jetpack集成

许多 Jetpack 库都包含提供全面协程支持的扩展。某些库还提供自己的协程作用域,可用于结构化并发。

协程使用:

提示:Kotlin没有将协程纳入标准库的API中,而是以依赖库的形式提供。 使用前需在app/build.gradle文件中添加如下依赖库

例如:

implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.1"

//用于android

implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.1.1"

代码实例

class LoginViewModel(

private val loginRepository: LoginRepository

): ViewModel() {

fun login(username: String, token: String) {

//新建一个协程,从UI线程移出

相关阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: