Android MediaPlayer: восстановление после изменения ориентации экрана - PullRequest
0 голосов
/ 17 апреля 2020

Мое приложение может воспроизводить звуки в разных ситуациях. Звуки короткие - около 1 секунды. Звуки загружаются из Inte rnet:

    var player = MediaPlayer ()
    player.setDataSource (this, file.uri, file.headers)
    player.prepareAsync ()

Может быть много звуков, и загрузка их может занять заметное время. В текущей реализации экземпляры MediaPlayer хранятся в Activity. Поэтому при повороте экрана действие вместе с медиаплеерами уничтожается и воссоздается. Когда пользователь поворачивает экран, все аудиофайлы снова загружаются из Inte rnet. Это приводит к задержке инициализации, и я думаю, что для пользователя будет сюрпризом, что, когда вы поворачиваете экран, ваш Inte rnet traffi c расходуется.

Какое оптимальное решение для это проблема?

Возможные варианты, о которых я читал в документации:

  1. Хранить MediaPlayer в ViewModel
  2. Хранить во Fragment, вызывая его setRetainInstance (true)
  3. Может быть, возможно сохранить MediaPlayer в функции onSaveInstanceState?
  4. Я могу использовать Service, но я считаю, что это слишком сложное решение для моей задачи. Мне не нужно воспроизводить звуки в фоновом режиме. Это допустимо, если воспроизведение прерывается при повороте экрана.

Какой из этих вариантов лучше? Может быть, есть лучшее решение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...