为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕田峪4524236 2022-06-15 09:30:44
所以我的目标是单击一个按钮,禁用它并启动一个计时器,一旦计时器到了启用按钮。简单吧?你会做这样的事情。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 秒并使其保持禁用状态?
查看完整描述

2 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

您必须将该信息保存在数据存储中,即使在应用程序关闭时也会保留该信息。

一种方法是使用https://developer.android.com/training/data-storage/shared-preferences

您必须在启动计时器时获取时间戳,或计算计时器的“结束时间”。然后您保存该信息,每当应用程序启动时,您首先检查您的首选项是否包含这样的时间戳。如果是这样,您检查您是否仍在那个“定时”窗口中。

要记住的关键事项:您必须在计时器到时删除持久信息,并且:如果有人同时更改系统时钟,您也会遇到问题。解决这个问题是可能的,但需要更多的努力。


查看完整回答
反对 回复 2022-06-15
?
catspeake

TA贡献1111条经验 获得超0个赞

用 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 

        }

    });


查看完整回答
反对 回复 2022-06-15
  • 2 回答
  • 0 关注
  • 129 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号