2016-04-21 63 views
0

我的問題是在黑暗中拍攝的:與Android 4.x /果凍豆有什麼關係?是否有服務,粘性,前景等問題?4.1.x(果凍豆)上的Android服務存在已知問題嗎?

背景故事:我在各種Android設備和模擬器上成功測試了我的音樂播放器應用程序,然後在最近使用了物理Jelly Bean設備(Samsung Rugby Pro)。當屏幕關閉時,我發現MediaPlayeronCompletion功能是而不是。大多數情況下,它不會因爲幾分鐘而被解僱。當屏幕開啓時,無論我的活動是否顯示,應用程序都可以正常工作。

(。上有薑餅,奇巧,棒棒糖,或棉花糖沒有問題,我對這些版本的物理設備,他們所有的工作完美無缺。)​​

設備的信息:

  • 操作系統版本:3.0.31-656355
  • 發佈:4.1.1
  • 設備:comancheatt
  • 型號:Samsung-SGH-I547
  • PRODUCT:comancheuc
  • 品牌:SAMSUNG
  • DISPLAY:JRO03L.I547UCBLL1
  • CPU_ABI:armeabi-V7A
  • CPU_ABI2:armeabi
  • HARDWARE:QCOM
  • ID:JRO03L
  • 製造商:samsung
  • USER:se.infra
  • HO ST:SEP-125
+0

這是綁定服務還是已啓動服務? – Pomagranite

+0

服務啓動並綁定到活動的「onResume」中,然後在「onPause」中解除綁定。如果該服務沒有被使用,那麼在'onPause'中它也會被停止。 –

+0

http://developer.android.com/guide/components/services.html – Pomagranite

回答

0

我明白了這一點;我希望這也可以幫助你...

問題是不是在發射onCompletion事件,而是reset()無限期阻止。我以前曾將此歸因於Android issue #959: MediaPlayer "crash" (deadlocks the calling thread) when resetting or releasing an unused MediaPlayer,這對我的情況不正確。

我的特別問題是我的測試設備上的攻擊性睡眠行爲。當我在飛行模式下運行幾個其他應用程序時會彈出此錯誤,因爲對reset()(或release())的調用也會釋放MediaPlayer實例的WakeLock。一旦發生這種情況,設備就會進入睡眠狀態,並且代碼會在該功能中阻塞。我無法使用附加和/或插入的調試器重現此問題,因爲其中任何一種情況都會阻止設備進入睡眠狀態!

我的解決辦法是創建一個單獨管理WakeLockacquire()開始播放時,它基本上和release()後,所有歌曲都起到過。從技術上講,我只在活動暫停時才這樣做,並且在恢復時釋放,因爲當設備已經醒來時不需要保留WakeLock

PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); 
WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyTag"); 
wakeLock.acquire();