【发布时间】:2021-12-30 20:53:15
【问题描述】:
所以当我按下一个按钮时,我需要等待 3 秒钟才能执行另一种方法,我用以下方法解决了这个问题
val job = CoroutineScope(Dispatchers.Main).launch(Dispatchers.Default, CoroutineStart.DEFAULT) {
delay(THREE_SECONDS)
if (this.isActive)
product?.let { listener?.removeProduct(it) }
}
override fun onRemoveProduct(product: Product) {
job.start()
}
现在,如果我在开始工作后立即按下取消按钮,我会停止工作,并且工作正常
override fun onClick(v: View?) {
when(v?.id) {
R.id.dismissBtn -> {
job.cancel()
}
}
}
问题是当我再次执行 onRemoveProduct 执行 job.start() 时它不会再次启动,似乎 job.isActive 永远不会屈服于 true,为什么会发生这种情况?
【问题讨论】:
标签: android kotlin kotlin-coroutines jobs