【问题标题】:Run a clock or timer even when app closes - Android即使在应用关闭时也运行时钟或计时器 - Android
【发布时间】:2013-08-07 04:02:48
【问题描述】:

玩过 Candy Crush 吗?知道你是如何耗尽生命并且必须等待 30 分钟才能再生一个新生命并且最多 5 分钟的吗?这是我试图在我的应用程序中实现的想法,但我不确定即使用户关闭应用程序和/或手机时如何运行代码。

我的问题是如何让计时器在手机后台持续运行,直到计时器达到 X 分钟。我会为此使用Timer 类吗?因为我熟悉该类并且已经在我的应用程序中实现了它的一种形式。

【问题讨论】:

  • 简短回答您需要使用Alarm manger
  • 启动一个服务,并在服务和alarmreceiver中注册alarmmanager,在alarm执行后做任何动作。

标签: java android service timer clock


【解决方案1】:

您的问题有两点:

  • 要实际运行计时器以便您在一段时间后执行操作,请使用AlarmManager。仅当您要主动打断或通知用户时才应使用此选项。
  • 您的方案实际上并不需要计时器,并且不必要地不使用计时器会更有效。相反,存储一个时间戳。当您的应用再次打开时,将当前时间与时间戳进行比较并计算效果。在 regenerating-lives 示例中,您将比较时间戳,看到 100 分钟已经过去,除以 30 分钟,然后添加 3 条生命(可能会保留额外的 10 分钟余数)。

【讨论】:

    【解决方案2】:

    如果您希望计时器在后台运行,您可以使用AlarmManager。您可以在指定的时间间隔设置警报,或者如果您想要单次警报,您可以将其设置为服务状态。此外,在使用 AlarmManager 时请注意,如果您的手机出现故障,那么您设置的所有警报都将消失。因此,请注意在电话响起之前节省闹钟时间。看看:

    http://developer.android.com/reference/android/app/AlarmManager.html

    在使用 AlarmManager 时,请使用正确的 PendingIntent 标志,否则您可能会丢失以前的警报。如果您仍想了解更多信息,可以在此处提出或使用 google。

    【讨论】:

      【解决方案3】:

      我认为即使应用程序关闭,您也无法为您的应用程序保持计时器运行。这是我想到的一个想法:

      • 当生命周期结束并且您的应用程序正在运行时,您需要启动一个计时器。
      • 在您的应用程序关闭事件中,将该计时器值保存在文件等持久存储中
      • 在应用程序启动时,从持久存储中读取计时器值,并在剩余时间重新启动计时器
      • 一旦计时器到期,就会产生新的生命。

      希望对你有帮助!

      【讨论】:

        【解决方案4】:

        我发现this 的答案可能会有很大帮助。希望对其他人有所帮助。

        有几种不同的方法。

        • 您可以使用系统的AlarmManager。
        • 您可以制作自己的服务。
        • 您可以让您的 TimerObject 持久化。

        查看完整答案和链接的链接。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-11-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多