如何用计时器禁用按钮,并保持它在重新启动禁用?

问题描述 投票:3回答:2

所以我的目标是点击一个按钮,禁用,并启动一个定时器,定时器被向上启用按钮。简单吧?你会做这样的事情。

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秒过去了打开应用程序?

java android android-studio kotlin
2个回答
2
投票

你必须坚持一个数据存储,保持它即使该应用程序被关闭内的信息。

要做到这一点的方法之一是使用https://developer.android.com/training/data-storage/shared-preferences

你必须启动定时器,当得到一个时间戳,或计算“结束时间”定时器。然后保存这些信息,每当应用程序启动时,您首先检查自己的喜好包含这样的时间戳。如果是这样,您检查是否仍然在“定时”窗口。

THR关键的事情要记住:你有当定时器达到去除保留的信息,以及:如果有人在平均时间改变系统时钟,你有问题,太。与处理是可能的,但需要更多的努力。


-3
投票

与处理器试试这个。

 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 
        }
    });
© www.soinside.com 2019 - 2024. All rights reserved.