所以我的目标是单击一个按钮,将其禁用,然后启动一个计时器,一旦计时器启动,请启用该按钮。简单吧?你会做这样的事情。
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秒钟并保持禁用状态?
答案 0 :(得分:2)
您必须在数据存储区中将信息持久存储在该存储区中,即使应用程序关闭也可以保留该信息。
一种方法是使用https://developer.android.com/training/data-storage/shared-preferences
启动计时器时,您必须获取时间戳,或者计算计时器的“结束时间”。然后,您保存该信息,并在应用程序启动时首先检查您的首选项是否包含这样的时间戳。如果是这样,请检查您是否仍在该“定时”窗口中。
需要记住的关键事项:计时器到时,您必须删除保留的信息,并且:如果有人在此同时更改系统时钟,您也遇到问题。解决该问题是可能的,但需要更多的精力。
答案 1 :(得分:-3)
尝试使用Handler。
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
}
});