2

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

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

4

4 回答 4

1

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

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

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

于 2013-08-07T04:41:14.823 回答
1

你的问题有两个部分:

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

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

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

希望能帮助到你!

于 2013-08-07T04:10:00.370 回答
0

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

有几种不同的方法。

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

检查链接以获取完整答案和链接。

于 2014-10-28T23:13:58.640 回答