所以我的目标是点击一个按钮,禁用,并启动一个定时器,定时器被向上启用按钮。简单吧?你会做这样的事情。
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
你必须启动定时器,当得到一个时间戳,或计算“结束时间”定时器。然后保存这些信息,每当应用程序启动时,您首先检查自己的喜好包含这样的时间戳。如果是这样,您检查是否仍然在“定时”窗口。
THR关键的事情要记住:你有当定时器达到去除保留的信息,以及:如果有人在平均时间改变系统时钟,你有问题,太。与处理是可能的,但需要更多的努力。
与处理器试试这个。
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
btn.setEnabled(false);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// This method will be executed once the timer is over
btn.setEnabled(true);
Log.d(TAG,"resend1");
}
},10000);// set time as per your requirement
}
});