Я работаю над приложением, которое использует объект MediaPlayer для воспроизведения видео H.264 MP4 с WallpaperService, поскольку это приложение для живых обоев. Слив батареи происходит, когда устройство (Nexus 5, Android 6.0.1) находится в режиме ожидания и сна, если я приостановил/остановил MediaPlayer с помощью mediaPlayer.pause() или mediaPlayer.stop(). Слив составляет около 3-7%/час, как проверено несколько раз в течение ночи. Как только я выпущу медиаплеер с mediaPlayer.release(), разряд батареи возвращается к более нормальному 1%/час. Я приостанавливаю/останавливаю медиаплеер, когда onVisibilityChanged вызывает false. В телефоне сообщается, что он будет спать как на Android-карте Android, так и на Better Battery Stats.Не выпуская MediaPlayer вызывает утечку аккумулятора
Как этот дренаж батареи объясняется, если CPU успешно переходит в состояние ожидания?
EDIT: Что-то новое, что я обнаружил, заключается в том, что при вызове mediaPlayer.setSurface (null) прямо перед mediaPlayer.pause() обычное использование батареи возвращается к норме. Затем я могу сделать mediaPlayer.setSurface (поверхность), чтобы установить его обратно до mediaPlayer.start(). Проблема в том, что есть несколько черных артефактов в течение нескольких секунд после перезапуска.
Спасибо за предложения. Заглядывая в pause(), это приводит к собственному методу, который я не могу проверить. Что-то новое, что я обнаружил, заключается в том, что если я делаю mediaPlayer.setSurface (null) прямо перед mediaPlayer.pause(), использование батареи в режиме ожидания возвращается к норме. Затем я могу сделать mediaPlayer.setSurface (поверхность), чтобы установить его обратно до mediaPlayer.start(). Проблема в том, что некоторые черные артефакты делают это в течение пары секунд после перезапуска. – Flyview
Новое редактирование: то же самое происходит с mediaPlayer.stop(). Если вы не делаете mediaPlayer.release(), разряд батареи продолжается. – Flyview