美文网首页
kotlin 协程多层调用

kotlin 协程多层调用

作者: blossom_6694 | 来源:发表于2022-09-12 16:07 被阅读0次
package com.yxr.yxrmpapi.myapplication

import android.graphics.Color
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.coroutines.*


class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        btn_fetch_data.setOnClickListener {
            fetchData()
        }
    }

    private fun fetchData() {
        GlobalScope.launch(Dispatchers.Main) {
            val step1 = step1()
            txt_show_content.setTextColor(Color.RED)
            txt_show_content.text = step1

            val step2 = step2()
            txt_show_content.setTextColor(Color.GREEN)
            txt_show_content.text = step2

            val step3 = step3()
            txt_show_content.setTextColor(Color.BLUE)
            txt_show_content.text = step3

        }
    }

    private suspend fun step1(): String {
        withContext(Dispatchers.IO) {
            delay(2000)
        }
        return "step1 data"
    }

    private suspend fun step2(): String {
        withContext(Dispatchers.IO) {
            delay(2000)
        }
        return "step2 data"
    }

    private suspend fun step3(): String {
        withContext(Dispatchers.IO) {
            delay(2000)
        }
        return "step3 data"
    }
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

  <Button
      android:id="@+id/btn_fetch_data"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="fetch data"
      app:layout_constraintTop_toTopOf="parent"
      app:layout_constraintLeft_toLeftOf="parent"
      app:layout_constraintRight_toRightOf="parent"
      />

    <TextView
        android:id="@+id/txt_show_content"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="展示内容"
        app:layout_constraintTop_toBottomOf="@id/btn_fetch_data"
        android:layout_marginTop="30dp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        >

    </TextView>

</androidx.constraintlayout.widget.ConstraintLayout>

相关文章

网友评论

      本文标题:kotlin 协程多层调用

      本文链接:https://www.haomeiwen.com/subject/dddhortx.html