初學Kotlin協程,功能強大復雜,如果碰到等待用戶選擇后確定協程是繼續還是中止,自己寫的代碼如下,測驗到是沒問題
求高手指點有什么問題
public class Fragment4Kt : Fragment(), CoroutineScope by MainScope() {
//...省略OnCreateView,onDestroy
// getHttpContent:網頁GET請求
private var myJob : Job? = null
private suspend fun myDelay(msg: String) = coroutineScope {
val job = async {
try {
delay(Long.MAX_VALUE)
} finally {
println("等待結束")
}
}
launch(Dispatchers.Main) {
AlertDialog.Builder(activity)
.setMessage(msg)
.setTitle("標題")
.setCancelable(false)
.setPositiveButton("確定") { _, _ -> job.cancel() }
.setNegativeButton("取消") { _, _ ->
job.cancel()
myJob?.cancel()
}
.create()
.show()
}
}
fun test() = launch(Dispatchers.IO) {
HttpUtils.getHttpContent("http://www.baidu.com")
println("job1完成")
myDelay("job2繼續?")
HttpUtils.getHttpContent("http://www.163.com")
println("job2完成")
myDelay("job3繼續")
HttpUtils.getHttpContent("https://www.12306.cn")
println("job3完成")
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/267987.html
標籤:Android
