我有一個非常簡單的Android GPS日誌記錄應用程序,運行一項服務。該活動不過是一個開始/停止按鈕來控制服務。點擊一個按鈕後,我開始一個新的後臺服務(使用START_STICKY)。然後關閉活動並且服務正常運行。我可以再次運行該應用程序來停止服務。我的Android服務突然停止,並創建一個新的服務
該服務只需將GPS座標記錄到文件。我正在登錄每個方法和異常捕獲。在某些時候,可能是幾分鐘或幾小時,我的服務將停止,但onDestroy不會被調用,也不會引發異常。日誌只是顯示我的最後一個文件寫入工作,然後沒有。我懷疑GC在殺死它,但我認爲START_STICKY基本上意思是「請儘可能長時間運行我」。 30秒後,啓動服務的新副本(不同的PID),onCreate和onStartService按照慣例調用。
如果/當它終止其父活動或應用程序時,Android會終止一項服務嗎?是否有必要在單獨的線程中運行該服務以防止出現這種情況?爲什麼整個服務生命週期沒有完成(onDestroy沒有被調用)?
我的服務在屏幕鎖定時運行正常,所以我不認爲這是問題所在。據我所知,服務不會暫停和恢復 –