2013-05-10 29 views
4

我有一個音樂Service在ICS中最近的應用程序列表上執行「滑動到退出」後停止的問題。服務開始於START_REDELIVER_INTENT,幾秒鐘後它會自動重新啓動,但我想阻止停止。當onTaskRemoved是calles時,如何防止服務停止?

「滑動退出」行爲通常是未知的,我基於我的全部知識在此thread。 它包含了從谷歌員​​工的一個評論:

當你滑開最近的任務是

[W]帽子具體情況:(1)殺死應用程序的任何背景或空的程序(見http://developer.android.com/guide/topics/fundamentals/processes-and-threads.html#Lifecycle什麼這個(2)使用新的http://developer.android.com/reference/android/app/Service.html#onTaskRemoved(android.content.Intent) API告訴應用程序的任何服務被刪除的任務,以便它可以做任何它認爲合適的事情。

實際上,除去在最近的任務中的條目將殺死存在的過程中的任何後臺進程。它不會直接導致服務停止,但有一個API可以讓他們找出任務已被刪除,以決定他們是否希望這意味着他們應該停止。這是爲了消除說電子郵件應用程序的最近任務不會導致它停止檢查電子郵件。 如果你真的想完全停止一個應用程序,你可以長時間按最近的任務去應用程序信息,並在那裏強制停止。對於停止是完全殺死應用程序 - 所有進程都被終止,所有服務停止,所有通知被移除,所有警報被移除等。應用程序不允許在明確請求之前再次啓動。

根據第二個意見,我Service應該能夠自行決定它想做的事 - 而是它停止未經我的任何行動,後來被重新啓動。

任何想法如何處理它?使用START_STICKY作品完全一樣...

回答

0

把您的服務放在foreground。請注意,當服務在前臺運行時,您將不得不顯示正在進行的通知。

+0

我不知道這怎麼可能,但把服務放在前臺並沒有阻止它被阻止,但是它沒有被重新啓動...... – Koger 2013-05-14 10:13:18

+0

你能把你的代碼粘貼到什麼地方嗎?我用這種方法運行良好。您也可以測試正在使用前臺服務的音樂播放器(包括正在進行的通知),在播放器被「滑動退出」後,該前臺服務不會停止。 – cygery 2013-05-14 14:55:01

+0

由於前臺服務導致應用程序無法繼續使用的問題,這可能不再適用於KitKat。 – 2014-03-15 23:02:46