2012-10-15 106 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

相關問題