第一个协程demo

109 阅读1分钟

程序员学习,不能只看,要写,要写,要写,重要的事说3遍

行吧,一点一点写吧

如果是用于 Android 平台的话,可以只引用以下的 coroutines-android,当中已经包含了 coroutines-core

implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.2'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.2'

对应的kotlin版本为 1.5.0

class CoroutineActivity : Activity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        test()
    }

    @OptIn(DelicateCoroutinesApi::class, InternalCoroutinesApi::class)
    private fun test() {
        Log.d("yzqyzq", "start")
        GlobalScope.launch(context = Dispatchers.IO) {
            //延时一秒
            delay(1000)
            Log.d("tag", "launch")
        }
        //主动休眠两秒,防止 JVM 过快退出
        Thread.sleep(2000)
        Log.d("tag", "end")

        GlobalScope.launch(Dispatchers.Main) {
            flow {
                emit(1)
                emit(2)
            }.collect {
                delay(1000)
                withContext(Dispatchers.IO) {
                    Log.d("tag11", "$it")
                }
                Log.d("tag22", "$it")
            }
        }

    }
}

参考:# 一文快速入门 Kotlin 协程