2016-04-21 3 views
0

Мой вопрос - это выстрел в темноте: что такое сделка с Android 4.x/Jelly Bean? Известны ли проблемы с услугами, липкостью, передним планом и т. Д.?Известны ли проблемы с Android Services на 4.1.x (Jelly Bean)?

Backstory: Я успешно тестировал приложение для музыкальных плееров на всех устройствах и эмуляторах Android, а затем совсем недавно на физическом устройстве Jelly Bean (Samsung Rugby Pro). Я обнаружил, что функция MediaPlayeronCompletionне выключена, когда экран выключен. Чаще всего он не увольняется за несколько минут. Когда экран включен, показывает ли моя активность, приложение работает нормально.

(. Там нет никаких проблем на Gingerbread, KitKat, леденец, или Зефир у меня есть физические устройства для этих версий, и все они работают безупречно.)

Информация об устройстве:

  • OS VERSION : 3.0.31-656355
  • РЕЛИЗ: 4.1.1
  • DEVICE: comancheatt
  • МОДЕЛЬ: SAMSUNG-SGH-I547
  • ИЗДЕЛИЯ: comancheuc
  • Марка: Samsung
  • ДИСПЛЕЯ: JRO03L.I547UCBLL1
  • CPU_ABI: armeabi-v7a
  • CPU_ABI2: armeabi
  • АППАРАТНО: 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. Как только это произойдет, устройство будет спать, и код будет блокироваться в этой функции. Я не смог воспроизвести это с отладчиком, подключенным и/или подключенным, потому что любой из них не позволял устройству спать!

Мое решение было создать отдельно управляемого WakeLock, который я в основном acquire(), когда начинается воспроизведение и release() после песни играли до конца.Технически я делаю это только в том случае, если действие приостановлено, а также выдается на резюме, потому что нет необходимости держать WakeLock, когда устройство уже проснулось.

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

 Смежные вопросы

  • Нет связанных вопросов^_^