一.简介
协程是一种并发设计模式,您可以在Android平台上使用它来简化异步执行的代码。
协程作为谷歌在 Android 上进行异步编程的推荐解决方案。具有以下优点:
1.轻量:您可以在单个线程上运行多个协程,因为协程支持挂起,不会使正在运行协程的线程阻塞。挂起比阻塞节省内存,且支持多个并行操作。
2.内存泄漏更少:使用结构化并发机制在一个作用域内执行多项操作。
3.内置取消支持:取消功能会自动通过正在运行的协程层次结构传播。
4.Jetpack 集成:许多 Jetpack 库都包含提供全面协程支持的扩展。某些库还提供自己的协程作用域,可供您用于结构化并发。
官方文档:Android 上的 Kotlin 协程 | Android Developers
二.引入协程
application.gradle
buildscript {
ext {
kotlin_version = '1.5.10'
}
repositories {
google()
mavenCentral()
}
dependencies {
classpath "com.android.tools.build:gradle:4.2.2"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
app.gradle
dependencies {
//Kotlin
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
//协程核心库
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.3"
//协程Android支持库
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.3"
//协程Java8支持库
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.4.3"
}
三.简单使用协程
代码
package com.example.myapplication.kotlin
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import com.example.myapplication.R
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
class KotlinActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_kotlin)
testCoroutine()
}
private fun testCoroutine() {
GlobalScope.launch {
Log.d("KotlinActivity", "GlobalScope.launch方法运行...")
Log.d("KotlinActivity", "GlobalScope.launch方法线程:${Thread.currentThread().name}")
}
Log.d("KotlinActivity", "线程:${Thread.currentThread().name}")
}
}
结果
D/KotlinActivity: 线程:main
D/KotlinActivity: GlobalScope.launch方法运行...
D/KotlinActivity: GlobalScope.launch方法线程:DefaultDispatcher-worker-1
说明
1.协程的作用域线程是DefaultDispatcher-worker-1,而默认的线程是main。
2.GlobalScope:Global:全局的 Scope:范围&作用域。