4.1.x(Jelly Bean)上的Android服务是否存在已知问题?

时间:2016-04-21 18:48:34

标签: android android-4.1-jelly-bean

我的问题是一个黑暗的镜头:Android 4.x / Jelly Bean的交易是什么?服务,粘性,前景等是否存在已知问题?

Backstory :我在各种Android设备和模拟器上成功测试了我的音乐播放器应用程序,然后最近在物理Jelly Bean设备(Samsung Rugby Pro)上测试了我的音乐播放器应用程序。我发现当屏幕关闭时,MediaPlayer onCompletion功能被持续触发。大多数情况下,几分钟不会被解雇。当屏幕打开时,无论我的活动是否显示,应用程序都可以正常工作。

(Gingerbread,KitKat,Lollipop或Marshmallow都没有问题。我有这些版本的物理设备,它们都能完美运行。)

设备信息:

  • OS VERSION:3.0.31-656355
  • RELEASE:4.1.1
  • 设备:comancheatt
  • 型号:SAMSUNG-SGH-I547
  • 产品:comancheuc
  • 品牌:samsung
  • 显示:JRO03L.I547UCBLL1
  • CPU_ABI:armeabi-v7a
  • CPU_ABI2:armeabi
  • HARDWARE:qcom
  • ID:JRO03L
  • 制造商:samsung
  • USER:se.infra
  • 主持人:SEP-125

1 个答案:

答案 0 :(得分:0)

我想出来了;我希望这对你有帮助......

问题是在触发onCompletion事件时,而是reset()无限期地阻止。我之前将此归因于Android issue #959: MediaPlayer "crash" (deadlocks the calling thread) when resetting or releasing an unused MediaPlayer,这对我的情况不正确。

我的特殊问题是我的测试设备上的侵略性睡眠行为。当我使用其他几个应用程序在飞行模式下运行时会弹出此错误,因为对reset()(或release())的调用也会释放MediaPlayer实例WakeLock 。一旦发生这种情况,设备就会睡眠,代码似乎会阻塞该功能。我无法通过附加和/或插入调试器来重现这一点,因为其中任何一个都阻止了设备进入睡眠状态!

我的解决方案是创建一个单独管理的WakeLock,我acquire()基本上在播放开始时release()在所有歌曲播放完毕后播放。WakeLock从技术上讲,我只在活动暂停时才这样做,并且在恢复时释放,因为当设备处于唤醒状态时,不需要按住PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyTag"); wakeLock.acquire();

.buttonColor:active {
    color: #ffff00;
}