2012-07-11 55 views
2

我得到了一個奇怪的問題與服務。它在ICS仿真器上正確無誤地工作。但是當我使用ICS 4.0.4在Galaxy Nexus上啓動它時,我觀察到服務在沒有任何堆棧跟蹤的情況下發生奇怪的崩潰。以下是我所得到的全部內容:服務崩潰的銀河聯繫,但不是模擬器

07-11 16:26:37.758: INFO/ActivityManager(136): Process com.test.service (pid 3899) has died. 
07-11 16:26:37.758: WARN/ActivityManager(136): Scheduling restart of crashed service com.test.service/.MyService in 20000ms 

我已經使用了Google,但沒有發現任何想法。可能它與內存壓力有某種聯繫?我期望做什麼?

UPD

附:如果它有任何意義,我從onStartCommand()啓動後臺線程,並且此線程無限工作。

P.P.S.我嘗試在單獨的過程中啓動服務,但沒有運氣。

回答

1

我的理解是,系統偶爾會刪除/殺死當時不需要的進程。但是,如果onStartCommand返回START_STICKY,它會在它被殺死後立即重新啓動......我沒有看到殺死這些進程的點,儘管我猜它可以在極端情況下提供幫助。模擬器行爲可能會有所不同。

假設你的服務不真正崩潰(應該在logcat的某種堆棧跟蹤),以防止系統這樣輕易地查殺服務,它必須開始作爲一個foreground服務。

+0

startForeground看起來很有幫助。我會試一試,謝謝。 – 2012-07-12 06:36:12