【发布时间】:2020-07-24 14:58:34
【问题描述】:
我想尝试从一个courtine 中暂停主线程。几个问题,但首先让我向您展示我正在使用的代码块作为测试:
class MainActivity : Activity(), CoroutineScope by MainScope() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
launch(Dispatchers.Main) {
val threadName = Thread.currentThread()
Log.v("mytag", "$threadName")
Log.v("mytag", "111 ")
Thread.sleep(5000)
Log.v("mytag", "222")
}
Thread.sleep(2500) //give coroutine some time to launch fully.
Log.v("mytag", "333")
}
}
产生以下输出:
V/mytag: 333
V/mytag: Thread[main,5,main]
V/mytag: 111
V/mytag: 222
因为我打印出当前线程名称,它不是 main 吗?我得到“线程[main,5,main]”
所以假设我在主线程上,那么为什么当我运行 Thread.sleep(5000) 时会打印“333”?我希望“333”将是最后一次打印,因为我已经冻结了主线程。
【问题讨论】: