我需要每隔5分钟运行一次服务。我已经有代码来安排在设备启动时重复警报。它可以工作,但
安装应用程序并运行它时,我的闹钟不会运行。需要重启debice。这是预期的。
如果我开始在活动开始时重复闹钟,那么我不确定我是否已经从设备启动中发出警报。我会得到“双打”吗?它会运行2个警报吗?
基本上,我想确保如果用户重新启动设备或电池芯片等,我会开始报警。但是,当安装应用程序以启动设备时,我也不想让他们重启设备。或者,例如,如果用户“强制关闭”然后运行应用程序 - 它将不再运行此服务,但它需要。而且,我不想要双跑。我每5分钟就需要一次。
如何/需要这样做?
答案 0 :(得分:5)
安装应用程序并运行它时,我的警报不会运行。需要重启debice。这是预期的。
您不必等到重启。在第一次运行应用程序时安排初始警报。
如果我开始在活动开始时重复闹钟,那么我不确定我是否已经从设备启动中发出警报。我会得到“双打”吗?它会运行2个警报吗?
只要它是等效的PendingIntent
,它就应该取代现有的警报AFAIK。
答案 1 :(得分:-1)
如果您或其他人仍然遇到此问题,我可以分享我最终用来解决问题的方法。
首先,让我按照我的理解重述这个问题,因为似乎有一些混乱:你想在应用程序首次启动时做一次(在你的情况下,设置一个警报)。当应用程序的其中一项活动被带到最前沿时。而且只是曾经。
您在启动时加载的第一个活动有一个onCreate方法,该方法带有一个可以帮助您的参数:
public void onCreate(Bundle savedInstanceState) {}
此活动第一次运行时,savedInstanceState将等于null。此后每次都不会为空。使用此选项可在应用程序启动时触发是否执行某些操作。这就是我如何确定是否在启动时启动服务。