3

我有一个新的地震通知 android 应用程序,它是它的初始版本。我目前有一个问题。我的应用程序有一个在后台运行的服务,它会安排自己每隔 X 周期运行一次。要安排自己,它需要至少运行一次。目前,当您启动手机时会发生这种情况。显然,一旦他安装了应用程序,我不希望用户重新启动他的手机。

此外,我不希望我的应用程序 UI 每次运行时都调用它。因为那显然会搞砸用户的日程安排。相反,我需要知道,当我的 UI 应用程序第一次在手机上运行时,它应该能够运行该服务,以便它可以自行安排并在未来继续按预期运行。

我可以解决的另一种方法是,如果我知道唤醒服务的现有警报列表,那么我就会知道应用程序是否已经在运行。

如果您想查看应用程序源代码或运行二进制文件;请看下面的github url

我希望我的意图很清楚。只是为了提供一些关于应用程序的背景;这是一个安卓手机的通知应用程序,它会在地震发生时生成通知,并在地图上显示受灾区域,并具有附加功能。它有一个 UI 应用程序,显示过去的地震列表。以及一项监视新服务的服务。

提前致谢。

4

2 回答 2

2

我不在家,所以这会很简短,直到我可以编辑来填写。

首先,我认为您可以设置一个 BroadcastReceiver 来通知您初始设置的软件包安装。

要检测您是否已经提交了警报,请尝试使用 FLAG_NO_CREATE 检索警报的 PendingIntent。如果你得到一个空值,你需要设置警报,否则它可能是好的。

于 2010-08-15T15:52:15.097 回答
1

请注意,调用不是嵌套:如果此服务尚未运行,则startService()无论您调用多少次,它都会被实例化并启动(如果需要为它创建一个进程);startService()如果它正在运行,那么它会继续运行。

对该方法的每次调用都会导致对目标服务的onStart (Intent, int) 方法的相应调用,具有此处给出的意图。

您可以轻松地在您的服务中使用一个布尔标志,例如:isScheduled您可以在收到事件时检查是否安排重复任务。

最后,如果你需要一个一直运行的服务,你应该在Application课堂上启动它,不管多少次。您在onStart服务的方法上有所不同。

于 2010-08-15T15:13:42.010 回答