“管理”AlarmManager。如何检测我是否已经重复报警运行?

时间:2011-04-17 02:47:29

标签: android

我需要每隔5分钟运行一次服务。我已经有代码来安排在设备启动时重复警报。它可以工作,但

  1. 安装应用程序并运行它时,我的闹钟不会运行。需要重启debice。这是预期的。

  2. 如果我开始在活动开始时重复闹钟,那么我不确定我是否已经从设备启动中发出警报。我会得到“双打”吗?它会运行2个警报吗?

  3. 基本上,我想确保如果用户重新启动设备或电池芯片等,我会开始报警。但是,当安装应用程序以启动设备时,我也不想让他们重启设备。或者,例如,如果用户“强制关闭”然后运行应用程序 - 它将不再运行此服务,但它需要。而且,我不想要双跑。我每5分钟就需要一次。

    如何/需要这样做?

2 个答案:

答案 0 :(得分:5)

  

安装应用程序并运行它时,我的警报不会运行。需要重启debice。这是预期的。

您不必等到重启。在第一次运行应用程序时安排初始警报。

  

如果我开始在活动开始时重复闹钟,那么我不确定我是否已经从设备启动中发出警报。我会得到“双打”吗?它会运行2个警报吗?

只要它是等效的PendingIntent,它就应该取代现有的警报AFAIK。

答案 1 :(得分:-1)

如果您或其他人仍然遇到此问题,我可以分享我最终用来解决问题的方法。

首先,让我按照我的理解重述这个问题,因为似乎有一些混乱:你想在应用程序首次启动时做一次(在你的情况下,设置一个警报)。当应用程序的其中一项活动被带到最前沿时。而且只是曾经。

您在启动时加载的第一个活动有一个onCreate方法,该方法带有一个可以帮助您的参数:

 public void onCreate(Bundle savedInstanceState) {}

此活动第一次运行时,savedInstanceState将等于null。此后每次都不会为空。使用此选项可在应用程序启动时触发是否执行某些操作。这就是我如何确定是否在启动时启动服务。