4.1.x(果冻豆)上的Android服务存在已知问题吗?

问题描述:

我的问题是在黑暗中拍摄的:与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

我明白了这一点;我希望这也可以帮助你...

问题是不是在发射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();