2017-04-04 189 views
0

我的應用程序中有任務在後臺運行。這些任務可以在一個小時或更長時間內執行很長時間。Android意圖服務+通知

有兩個問題:

1)我需要向用戶顯示任務的狀態。這個怎麼做?每次創建通知?如何解決這個問題的最佳做法是什麼?

2)是否有可能使該意圖服務執行任務到最後而不是斷開連接?

+0

是試試這個: - http://stackoverflow.com/a/43198270/6096821 –

+0

安迪,但如果MainActivity將被殺死當服務發送通知給MainActivity時,我們會捕獲NullPointerException或類似的東西?因爲您的廣播接收器在沒有MainActivity的情況下不存在。 – Delphian

+0

請仔細觀看,因爲廣播已經在onResume中註冊。 –

回答

2

如果您希望您的服務在完成任務後繼續運行IntentService不是最佳選擇。您可以使用Foreground service來實現你的兩個要求 - 顯示通知給用戶,並長期運行的任務

編輯:因爲foreground service是它的主線程上運行只是正常的服務,讓您`ll需要使用Async task的實際後臺工作(或其他任何異步工作方式)。 在加副作用利用前景的服務,讓系統少likelly停止您的長時間運行工作

+0

我沒有想過,也是一個想法。該服務只會顯示在通知欄中?這個解決方案有什麼可能的問題? – Delphian

+0

該服務不會在批註欄中顯示。它只會像普通服務一樣運行,但會在前臺進行線程處理.a.k.a系統將嘗試不殺死它。 @Delphian ive使用pro和con編輯 – X3Btel

+0

我添加了startForeground()而不是NotificationManager.notify(),並且我的intentService不會終止並在應用程序關閉時工作。但是當我點擊我的通知和應用程序再次啓動我的intentService停止。如何改變這一點? – Delphian