2017-03-24 90 views
0

我目前正試圖製作一個永不結束的Android應用程序(重新啓動時凍結/停止/刷卡/殺死等..)爲特定用途。當運行更多其他應用程序時停止Android背景服務

所以我使用後臺服務與onTaskRemoved()重新啓動服務時,刷新了最近的應用程序列表。還START_STICKY保持它運行的背景。

當沒有很多新的應用程序在其上運行時,我的應用程序對我的聲音做出了很好的響應(它顯示了敬酒)。但是當一段時間過得很快或者有3〜4個正在運行的應用程序時,它就會凍結(不響應我的聲音)。

有沒有辦法讓我的應用程序總是在其他應用程序的頂部運行(例如總是在最近的應用程序列表頂部,當按下home按鈕幾秒鐘時顯示),或者只是簡單地重新啓動應用程序,如果凍結?

請幫我一把。我知道這可能聽起來很奇怪,試圖創建一個永無止境的應用程序,但如果你能幫助我,這對我的項目將是一個很大的幫助。

謝謝:)

回答

0

爲Android不停止服務,您可以撥打startForeground()

然而,一些服務會被用戶錯過,如果它們神祕消失 。例如,隨Android發售 的默認音樂播放器應用程序會使用服務來播放實際的音樂。這樣, 用戶可以聽音樂,同時繼續使用他們的手機爲 其他目的。該服務僅在用戶進入時停止,並且 按下音樂播放器活動中的停止按鈕。如果服務 意外關閉,用戶可能會想知道什麼是 錯誤。

像這樣的服務可以聲明自己是 「前景」的一部分。這將導致他們的優先級上升,並使他們不太可能被內存不足所淘汰。權衡是 服務必須保持一個通知,所以用戶知道這個服務聲稱是前景的一部分。而且,理想情況下,該通知提供了一條簡單的途徑,可以回溯到用戶可以停止服務的某些活動。

要做到這一點,請在您的服務的onCreate()(或其他位於 服務的生命中的任何地方)中調用startForeground()。這個 需要一個Notification和一個本地唯一的整數,就像NotificationManager上的 notify()方法一樣。它會導致出現通知 並將服務移至前臺優先級。稍後,您 可以調用stopForeground()返回到正常優先級。

相關問題