2011-09-06 53 views
2

我正在開發位置跟蹤應用程序。我有定期檢測服務中位置變化的應用程序機制。Android服務中斷

我的服務一直運行,這是我想要的,但偶爾我發現服務已停止。在我的清單中,我在主要活動上設置了android:configChanges="orientation|keyboardHidden",因此每次方向更改時都不會重新創建,但是我需要爲每項活動和服務執行此操作嗎?

此外,潛在的是操作系統會導致我的服務中斷。在那種情況下,是否有辦法強制系統忽略我的服務或在設定的分鐘數後自動重新啓動服務?

謝謝!

回答

2

我的服務始終運行這是我想要

您的用戶很可能不同意什麼。

但是我需要爲每項活動和服務做到嗎?

你可能不應該這樣做的任何組件。這主要是針對UI太複雜而無法在新活動中成功重新呈現(例如,某些遊戲,視頻回放)或活動也被鎖定到特定方向的情況。無論如何,服務沒有android:configChanges屬性。

可能它的操作系統殺了我的服務

操作系統將關閉泄漏的服務,比如你的,以防止過度耗費電池。

有沒有辦法強制系統忽略我的服務

您可以使用startForeground()

還是在設定的分鐘數後自動重新啓動服務?

返回START_STICKY(或可能START_REDELIVER_INTENT)從onStartCommand()

更好的是重新考慮你的方法。保持位置跟蹤 - 特別是GPS - 是一個顯着的電池消耗。有相當少的應用程序應該在後臺持續監視位置。如果您確實需要每隔15分鐘確定一次位置修正(例如,每隔15分鐘),請使用AlarmManager啓動您的服務以獲取修復,然後讓服務呼叫stopSelf()消失,直至發出下一次警報。