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

标签 java android android-studio kotlin

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

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

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

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

关于java - 如何禁用带有计时器的按钮并在重新启动时保持禁用状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54623708/

相关文章:

java - Libgdx 和 Google 应用内购买结果

java - 线程 "main"java.ClassCastException : MomentOfInertia. 中出现异常 三角形无法转换为 Ix

java - 在 Spring Integration 中为 ContentEnricher 定义异常回退行为

安卓工作室 : Run button not working

android-studio - Android Play 商店本地化问题

java - 音频在 android studio (MediaPlayer) 中不起作用

java - JSF 从不呈现没有重定向规则的页面

android - intellij- 无法解析符号 'support'

java - 抽屉导航中 webview 的 findViewById 问题

android - 编码 mp4 视频以支持查找