所以,我在一個單獨的線程中流式傳輸音樂。如果我離開應用程序(onPause()
,onStop()
被調用等),音樂繼續播放,但最終 - 打開其他應用程序並在它們之間切換並返回主屏幕後 - 我的應用程序被終止。沒有崩潰,只有在logcat中的WIN DEATH
和process com.myapp.android has died
。顯然,系統爲了回收資源而銷燬應用程序是合法的。MediaPlayer在單獨的線程vs在服務中通過startForeground()運行
我的問題是:是否在主線(UI)線程中運行線程意味着它現在的系統所關注的優先級較低?意思是說,比起我在Service
中運行媒體播放器,甚至使用startForeground()
使服務在前臺運行,它更有可能被殺死嗎?
任何想法或澄清將不勝感激!
編輯
此外,在服務的文件的一部分混淆了我。在相關部分,它指出:
注意:一種服務,它的託管過程中 服務的主線程中運行不創建自己的線程,並在 單獨的進程不會運行(除非指定)。這意味着,如果您的服務將執行任何CPU密集型工作或阻止 操作(如MP3播放或聯網),則應在服務中創建一個 新線程來完成此項工作。
我一直在主線程的服務中運行MP3播放,UI仍然響應。如果我應該按照上述引用中的建議將它放入單獨的線程中,那麼我將不會返回到我開始的位置,即媒體播放出現在主線程中,從而增加播放的可能性在其他應用程序打開時會被殺死,等等?
謝謝!你能解決我的編輯? – LuxuryMode 2012-01-18 19:03:10
我已經將我的mediaplayer放置在一個服務中,並且在其自己的線程中運行。如果它需要更多資源,Android將會終止媒體播放器,無論它位於何處。並且在具有前臺優先級的服務中被殺死的可能性要比在單獨的線程中更少。似乎永遠不會遇害的唯一地方就是目前處於前臺的活動。 – AndroidDev 2013-07-25 06:32:06