2010-08-15 111 views
3

我有一个新的地震通知android应用程序,它是它的初始版本。目前我有一个问题。我的应用程序有一个在后台运行的服务,它计划自己运行每个X周期。要安排自己,它需要至少运行一次。目前发生在您启动手机时。很明显,我不希望用户在安装应用程序后重新启动手机。运行Android应用程序的代码

另外我不想要的是让我的应用程序UI在每次运行时调用它。因为这会明显影响用户的日程安排。我需要知道,无论是当我的UI应用程序第一次在手机上运行时,它都应该能够运行该服务,以便它能够自行调度并在未来继续按预期运行。

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

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

我希望我在我的意图明确。只是为了给一些应用程序的背景;这是一款android手机的通知应用程序,可在发生地震时生成通知,并在地图上显示受影响的区域并提供附加功能。 它有一个UI应用程序,显示过去的地震列表。还有一项监视新功能的服务。

在此先感谢。

回答

2

我不在家,所以这将是简短的,直到我可以编辑填写。

首先,我想你可以设置一个BroadcastReceiver通知你的包安装的初始设置。

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

+0

完美。我应该自己想想。 PendingIntent.getBroadcast就是我想要的! :) – Priyank 2010-08-15 17:54:06

1

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

对此方法的每个调用都将导致相应的调用目标服务的onStart(Intent,int)方法,其意图在此给出。

你可以轻松拥有一个布尔标志在你的服务是这样的:isScheduled,你可以核对时间表或不是你的重复任务,当您收到的事件。

最后,如果你需要运行所有的时间服务,你应该开始它在Application类,无论多少次。你在服务的方法onStart做了区别。

相关问题