Java 即使应用程序关闭,也要运行时钟或计时器-Android

Java 即使应用程序关闭,也要运行时钟或计时器-Android,java,android,service,timer,clock,Java,Android,Service,Timer,Clock,玩过《糖果迷恋》吗?知道你是如何耗尽生命的吗?你必须等待30分钟才能再生新生命,最多5分钟?这正是我试图在我的应用程序中实现的想法,但即使用户关闭应用程序和/或手机,我也不确定如何让代码运行 我的问题是如何让计时器在手机的后台持续运行,直到计时器达到X分钟。我会为此使用计时器类吗?因为我熟悉这个类,并且已经在我的应用程序中实现了它的一种形式。我认为即使在应用程序关闭时,您也无法为应用程序保持计时器运行。以下是我想到的一个想法: 当生命结束并且应用程序正在运行时,您需要启动计时器 在应用程序关闭

玩过《糖果迷恋》吗?知道你是如何耗尽生命的吗?你必须等待30分钟才能再生新生命,最多5分钟?这正是我试图在我的应用程序中实现的想法,但即使用户关闭应用程序和/或手机,我也不确定如何让代码运行


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

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

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

希望有帮助

你的问题有两部分:

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

如果您想让计时器在后台运行,可以使用
AlarmManager
。您可以按指定的时间间隔设置报警,如果需要单次触发报警,也可以在服务中设置报警。此外,在使用AlarmManager时,请注意,如果您的手机出现故障,则您设置的所有警报都将消失。所以,在手机关机前,要注意节省闹钟时间。看看:

使用AlarmManager时,请使用正确的
PendingEvent
标志,否则可能会丢失以前的报警。如果你还需要更多的信息,你可以在这里提出,或者使用谷歌。

我发现答案可能会很有帮助。希望它能帮助别人

有几种不同的方法

  • 您可以使用系统的AlarmManager
  • 你可以自己做服务
  • 您可以使TimerObject持久化

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

简短答案您需要使用
报警管理器
。启动服务并在服务中注册alarmmanager和alarmreceiver,以便在执行报警后执行任何操作。