所以我的目标是点击一个按钮,禁用它并启动一个计时器,一旦计时器启动就启用按钮。简单吧?你会做这样的事情。
button1.onClick {
button1.setEnabled(false);
new CountDownTimer(60000, 1000) { //Set Timer for 5 seconds
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
button1.setEnabled(true);
}
}.start()
}
但是.. 如果用户在计时器运行时关闭应用程序,按钮将再次启用,重新启动计时器。因此,用户不必等待 60 秒,只需关闭应用程序并在 10 秒内打开它即可。
所以我的问题是,如何禁用该按钮 60 秒,并在 60 秒过去之前,即使用户关闭并打开应用程序也保持禁用状态?
最佳答案
您必须持久化该信息在数据存储中,即使应用关闭也能保留。
一种方法是使用 https://developer.android.com/training/data-storage/shared-preferences
您必须在启动计时器时获取时间戳,或者计算计时器的“结束时间”。然后你保存这些信息,每当应用程序启动时,你首先检查你的偏好是否包含这样的时间戳。如果是,则检查您是否仍在那个“定时”窗口中。
需要记住的关键事项:当计时器启动时,您必须删除持久化信息,并且:如果有人同时更改系统时钟,您也会遇到问题。处理这个问题是可能的,但需要更多的努力。
关于java - 如何禁用带有计时器的按钮并在重新启动时保持禁用状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54623708/