簡體   English   中英

如何在協程中更新 Android UI?

[英]How can I update Android UI in a coroutine?

當我將更新 UI 的代碼放入協程時,我的代碼會崩潰。 例如:

GlobalScope.launch {
//code that makes text box blue
delay(1000L)
}

會崩潰。 我還需要多次循環延遲,所以我不能使用后期處理程序。 我怎樣才能解決這個問題?

如果您正在處理活動,您可以通過這種方式更新您的 UI

class MainActivity : AppCompatActivity() {

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

      launch(context = UI) {

        val result = async { loadString() }.await()
        Log.d("TAG", 
            "Post execution thread:"+Thread.currentThread().name)
        textView.text = result   
      }
    }

    private suspend fun loadString() : String {
       Log.d("TAG", "Execution thread: "+Thread.currentThread().name)
       delay(1000L)
       return "Some loaded string..."
   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM