kotlin 协程多层调用

2022-09-12  本文已影响0人  blossom_6694
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>
上一篇 下一篇

猜你喜欢

热点阅读