將應用程序置於後臺(按下主頁按鈕)時服務正在被銷燬是否正常? 如果是,我可以通過評論onDestroy()函數來覆蓋它,以便服務不被破壞?即做到這一點是一種很好的做法。OnDestroy()當應用程序轉到後臺時被調用服務
回答
註釋掉onDestroy()
方法將不會對此行爲產生影響; Service
類遵循其生命週期described here。
要保持Service
在後臺運行,最常見的方法是使用持久通知。這是設計的; Android不希望服務在後臺運行,並且不會向用戶指示他們正在執行某些操作並可能會耗盡電池和使用系統資源。
這是通過從服務調用startForeground()
並傳遞一個將顯示給用戶的通知來完成的。 More on this here。
除此之外,另一種方法是將服務中的onStartCommand()
的返回值更改爲向Android「提示」,以便服務不應該被終止,或者在終止時重新啓動;但是,這不能保證您的服務將保持在低內存的情況下運行。 More on this here。
這也很好問:你在做什麼,需要服務在後臺持續運行?通常有更有效的方法來完成這些任務。
感謝您的回覆,即時通訊是從網絡下載數據的服務中的呼叫,當新數據到達時應通知用戶...與通訊應用程序相同 – 2015-02-23 09:11:31
您是否看過使用Google Cloud Messaging(https://developer.android.com/google/gcm/index.html)等服務?這是一種很好的方式,可以在新的數據到達時通知應用程序,而無需保持資源密集型服務的持續運行。強烈建議尋找這樣的方法。 – dcarr622 2015-02-23 09:15:42
我會那樣做,謝謝你。 – 2015-02-23 09:26:02
- 1. 停止後臺服務當應用程序轉到後臺
- 2. 應用程序轉到後臺時應調用哪種方法?
- 3. 當應用程序轉到後臺時關閉NSStreams
- 4. 當應用程序轉到後臺時刪除UIAlerts
- 5. 如何在應用程序轉到後臺時刪除回調?
- 6. 當調用onDestroy()時運行長任務
- 7. 當應用程序前臺到後臺時,定時器沒有調整
- 8. 當應用程序進入後臺時,應用程序代理不會調用
- 9. Java 1.6當被後臺調用時被破壞Symfony任務
- 10. 當應用程序從後臺啓動時,applicationDidBecomeActive會被調用嗎?
- 11. IOS當後臺服務正在調用我的應用程序變得掛起
- 12. 當應用程序進入後臺時可以調用webRequest嗎?
- 13. 當應用程序爲後臺時調用URLSession.shared.dataTask
- 14. 當應用程序被終止,服務不能在後臺工作
- 15. AVPlayer和addPeriodicTimeObserverForInterval當應用程序被切換到後臺
- 16. 當應用程序在後臺請求服務器
- 17. Android服務onCreate被調用多次,而無需調用onDestroy
- 18. 當應用程序從後臺轉到前臺時,忽略推送通知
- 19. 當應用程序在後臺時無法從服務器獲取響應 - iOS4
- 20. 從後臺任務或服務確定當前的前臺應用程序
- 21. 當應用程序轉到後臺時使用公共基本活動停止服務
- 22. 當應用程序到達前臺時調用self.viewDidAppear
- 23. 當應用程序在後臺時異步任務崩潰
- 24. 當應用程序終止時執行後臺任務
- 25. 從後臺線程調用WCF服務
- 26. Android應用程序計時從後臺服務彈出
- 27. onActivityResult在onDestroy之後不再被調用
- 28. onDestroy()在this.finish()後不會被調用()
- 29. 當位置服務正在運行時,Android應用崩潰onDestroy
- 30. 當應用程序進入後臺並進入前臺時調用UIViewController方法
顯示您的代碼。服務不會在這種情況下被銷燬 – 2015-02-23 09:01:39
開始服務爲前景http://stackoverflow.com/questions/24839655/how-to-use-startforeground/24839801#24839801 – 2015-02-23 09:04:01
它的一個巨大的代碼,所以這不是一個默認命令當應用程序轉到後臺時執行? – 2015-02-23 09:05:07