2015-02-23 109 views
1

將應用程序置於後臺(按下主頁按鈕)時服務正在被銷燬是否正常? 如果是,我可以通過評論onDestroy()函數來覆蓋它,以便服務不被破壞?即做到這一點是一種很好的做法。OnDestroy()當應用程序轉到後臺時被調用服務

+0

顯示您的代碼。服務不會在這種情況下被銷燬 – 2015-02-23 09:01:39

+0

開始服務爲前景http://stackoverflow.com/questions/24839655/how-to-use-startforeground/24839801#24839801 – 2015-02-23 09:04:01

+0

它的一個巨大的代碼,所以這不是一個默認命令當應用程序轉到後臺時執行? – 2015-02-23 09:05:07

回答

1

註釋掉onDestroy()方法將不會對此行爲產生影響; Service類遵循其生命週期described here

要保持Service在後臺運行,最常見的方法是使用持久通知。這是設計的; Android不希望服務在後臺運行,並且不會向用戶指示他們正在執行某些操作並可能會耗盡電池和使用系統資源。

這是通過從服務調用startForeground()並傳遞一個將顯示給用戶的通知來完成的。 More on this here

除此之外,另一種方法是將服務中的onStartCommand()的返回值更改爲向Android「提示」,以便服務不應該被終止,或者在終止時重新啓動;但是,這不能保證您的服務將保持在低內存的情況下運行。 More on this here

這也很好問:你在做什麼,需要服務在後臺持續運行?通常有更有效的方法來完成這些任務。

+0

感謝您的回覆,即時通訊是從網絡下載數據的服務中的呼叫,當新數據到達時應通知用戶...與通訊應用程序相同 – 2015-02-23 09:11:31

+0

您是否看過使用Google Cloud Messaging(https://developer.android.com/google/gcm/index.html)等服務?這是一種很好的方式,可以在新的數據到達時通知應用程序,而無需保持資源密集型服務的持續運行。強烈建議尋找這樣的方法。 – dcarr622 2015-02-23 09:15:42

+0

我會那樣做,謝謝你。 – 2015-02-23 09:26:02

相關問題