Tôi chỉ mới bắt đầu học coroutines Kotlin và đã cố gắng để mô phỏng một thời gian dài API cuộc gọi với hiển thị kết quả trên giao diện người dùng:Làm thế nào để sử dụng coroutines Kotlin chờ đợi() trên chủ đề chính
class MainActivity : AppCompatActivity() {
fun log(msg: String) = println("[${Thread.currentThread().name}] $msg")
override
fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
this.setContentView(R.layout.activity_main)
val resultTV = findViewById(R.id.text) as TextView
val a = async(CommonPool) {
delay(1_000L)
6
}
val b = async(CommonPool) {
delay(1_000L)
7
}
launch(< NEED UI thread here >) {
val aVal = a.await()
val bVal = b.await()
resultTV.setText((aVal * bVal).toString())
}
}
}
tôi không hiểu làm thế nào tôi có thể sử dụng phương pháp launch
với ngữ cảnh main
.
Thật không may, tôi không thể tìm thấy bất kỳ điều gì về việc cung cấp kết quả cho một số chủ đề cụ thể trên the official tutorial for coroutines.
Xin lỗi, nơi mà bạn đã tìm thấy 'phương pháp launch'? –
Có lẽ thư viện này sẽ giúp bạn https://github.com/metalabdesign/AsyncAwait –
Tôi muốn thông qua thư viện, nhưng tôi chỉ lo lắng là có thể làm bằng cách sử dụng chỉ kotlinx.coroutines tiêu chuẩn. –