计时器在后台停止:Android

时间:2013-06-04 09:41:38

标签: android service timer broadcastreceiver alarmmanager

我在我的应用程序中使用计时器来执行重复任务。默认情况下,timer应该以一秒的延迟重复任务。我在应用程序启动时启动计时器。这一切都很完美。此外,当我退出应用程序并打开其他应用程序时,计时器仍在运行。

当我打开Goog​​le地图应用程序时,我的计时器停止运行。我不知道为什么会这样。我用google搜索并从活动生命周期中发现,如果其他应用程序需要内存,则所有进程都将被终止。我猜这就是我的情况。

我不希望我的计时器停止。它必须始终运行,直到用户卸载我的应用程序。

  1. 为什么会出现上述问题?
  2. 如何达到我的要求?
  3. 使用services会解决问题吗?如果是这样,有没有办法让timer始终开启而不使用services
  4. 报警管理器有用吗?即使用户重新启动手机,计时器也应正常工作。

1 个答案:

答案 0 :(得分:0)

是的,服务可以解决您的问题。 Activity的持久性由其生命周期决定,因此最终,您无法控制其执行。服务是持久的,因为它不会被系统关闭。但是,如果您正在进行大量计算,请注意操作系统不会像屏幕上的活动一样对资源分配慷慨。

简而言之:
1)嗯,根据你提供的信息,我想你得出了正确的结论。
2)通过服务。
3)是的,它会解决你的问题,不,我认为没有其他办法可以做到这一点,至少不是来自一项活动。
4)如果你实际上并没有询问Java.util.Timer的持久性,而是想要在某些时候执行一段代码,那么这可能是更好(/更简单)的解决方案。不过,我不知道它对于相当频繁的时间有多好。系统重启时可以恢复服务,因此无需担心手机关机。您可以订阅启动事件。