0

我正在開發一個應用程序,該應用程序在啓動時啓動使用服務登錄到我的服務器(需要通過Facebook登錄的活動)的活動(使用startService )。此服務建立XMPP偵聽器,然後不做任何事情,只是等待連接。我希望此服務在設備運行時始終運行。即使應用程序已停止,在啓動​​時仍保持服務運行

問題是活動在一段時間後停止,我的服務也停止。該服務返回START_STICKY,所以我期待它掛起。除了等待連接之外,該服務也不會執行任何操作。

活動具有的屬性: 機器人:excludeFromRecents = 「真」 機器人:noHistory = 「真」 機器人:launchMode = 「singleInstance」

,使其不會在任務列表中顯示出來(當用戶長按主頁按鈕時)。

當用戶長按主頁按鈕並且服務也結束時,活動停止。我認爲它可能退出了應用程序,這就是爲什麼服務也結束了。我找不到任何方法阻止活動停止。也許因爲上述屬性而停止。

那麼我能做些什麼來保持服務始終運行。我如何保持應用程序不被移除。我在某處讀到,如果我在服務中保留一個while循環,那麼START_STICKY可以保持服務? 我可以使用AlarmManager啓動服務,但我不希望它輕鬆停止,然後每次都必須重新啓動它。

我不想運行前臺服務。由於我使用的不是IPC的現有代碼,因此無法在其他進程中運行該服務。任何幫助將不勝感激。謝謝。

回答

0

有兩件事無限期地繼續運行服務;使用startService()創建服務並從onStartCommand()返回START_STICKY。你似乎都這樣做。通過這兩個步驟,服務可能會被系統關閉,但應該立即重啓。

我唯一的建議是在服務中創建一個單獨的線程。這是因爲默認情況下,啓動的服務在應用程序主線程中運行。如果服務不斷執行特定任務,則可能會阻塞主線程並終止應用程序。谷歌文檔有一個實施例:

http://developer.android.com/guide/components/services.html#ExtendingService

相關問題