【发布时间】:2020-10-09 21:01:36
【问题描述】:
我想在两次按下按钮之间添加一个固定的时间间隔(以分钟为单位)。我尝试使用postDelayed() 和CountDownTimer,但如果我重新启动应用程序,我可以再次按下按钮。
使用 postDelayed()
binding.trialButton.setOnClickListener {
Timber.d("Delay button pressed")
binding.trialButton.isEnabled = false
binding.trialButton.postDelayed( {
binding.trialButton.isEnabled = true
}, 40*1000);
}
使用倒计时
binding.trialButton.setOnClickListener {
Timber.d("Delay button pressed")
binding.trialButton.isEnabled = false
val timer = object: CountDownTimer(30000, 1000) {
override fun onTick(millisUntilFinished: Long) {
Timber.d("Tick")
}
override fun onFinish() {
binding.trialButton.isEnabled = true
}
}
timer.start()
}
对于我的用例,即使应用程序关闭,按钮也应在指定的时间间隔内保持禁用状态。我有两种方法:
- 计算按钮可再次单击时的时间戳并启动
postDelayed()计时器。还将时间戳保存在共享首选项中。如果应用重新启动,则获取保存的值并启动计时器。 - 运行后台服务:对这方面不太熟悉。
这里最好的方法是什么?你有更好的技术吗?
【问题讨论】: