2012-10-15 146 views
0

我有一个应用程序,它扩展Application类并覆盖onCreate方法。
在我的onCreate中,我安排了一项服务,使用AlarmManager每5分钟运行一次。
在日志中,我看到onCreate在一段时间后再次调用,就好像应用程序已重新启动/重新创建一样。
这最终与我的服务不与第一次执行同步。
有没有办法来防止这种情况,并保证在应用程序的代码onCreate只会执行一次(当然假设应用程序没有明确关闭的用户)?Application.onCreate不止一次调用

感谢

+0

你能更具体一点吗?如果您更改设备的方向,是否发生这种情况? – kittu88

+0

我想方向变化多次,但这是当应用程序在后台,也应该影响活动,而不是应用程序。在日志中,我在20多分钟的时间内看到它几次,所以我想这与配置无关... – Oren

回答

0

onCreate()Application被称为启动的过程的一部分。如果您在日志中看到它多次被调用,那是因为您的进程在运行之间被终止。

+0

那么AlarmManager是否会重新启动它?如何防止/检测此类情况,以便在定义的时间间隔内维护正确的服务执行? – Oren

+0

@Oren:“那么AlarmManager是否重新启动它?” - 由于我无法访问您的日志,因此我无法回答。您应该能够根据日志时间戳记来判断。 “我如何防止/检测这种情况,以便在规定的时间间隔内维持正确的服务执行?” - 不要从'Application'的'onCreate()'启动服务。或者,记录您的服务何时运行(例如'SharedPreferences'中的'lastRunTime'值),并且如果您确定服务尚未运行,则只需启动“AlarmManager”。 – CommonsWare

+0

从日志中我看到当我在一段时间后进入主活动时重新创建过程(不同的pid) - 意味着在某些情况下重新创建过程以打开活动。我不想使用SharedPreferences,因为这意味着我将不得不维护许多用例(例如,启动,从任务管理器等关闭) – Oren

相关问题