猿问

如何禁用带有计时器的按钮并在重新启动时保持禁用状态?

所以我的目标是单击一个按钮,禁用它并启动一个计时器,一旦计时器到了启用按钮。简单吧?你会做这样的事情。


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 秒并使其保持禁用状态?


慕田峪4524236
浏览 130回答 2
2回答

婷婷同学_

您必须将该信息保存在数据存储中,即使在应用程序关闭时也会保留该信息。一种方法是使用https://developer.android.com/training/data-storage/shared-preferences您必须在启动计时器时获取时间戳,或计算计时器的“结束时间”。然后您保存该信息,每当应用程序启动时,您首先检查您的首选项是否包含这样的时间戳。如果是这样,您检查您是否仍在那个“定时”窗口中。要记住的关键事项:您必须在计时器到时删除持久信息,并且:如果有人同时更改系统时钟,您也会遇到问题。解决这个问题是可能的,但需要更多的努力。

catspeake

用 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         }    });
随时随地看视频慕课网APP

相关分类

Java
我要回答