Мое приложение может воспроизводить звуки в разных ситуациях. Звуки короткие - около 1 секунды. Звуки загружаются из Inte rnet:
var player = MediaPlayer ()
player.setDataSource (this, file.uri, file.headers)
player.prepareAsync ()
Может быть много звуков, и загрузка их может занять заметное время. В текущей реализации экземпляры MediaPlayer хранятся в Activity. Поэтому при повороте экрана действие вместе с медиаплеерами уничтожается и воссоздается. Когда пользователь поворачивает экран, все аудиофайлы снова загружаются из Inte rnet. Это приводит к задержке инициализации, и я думаю, что для пользователя будет сюрпризом, что, когда вы поворачиваете экран, ваш Inte rnet traffi c расходуется.
Какое оптимальное решение для это проблема?
Возможные варианты, о которых я читал в документации:
- Хранить MediaPlayer в ViewModel
- Хранить во Fragment, вызывая его setRetainInstance (true)
- Может быть, возможно сохранить MediaPlayer в функции onSaveInstanceState?
- Я могу использовать Service, но я считаю, что это слишком сложное решение для моей задачи. Мне не нужно воспроизводить звуки в фоновом режиме. Это допустимо, если воспроизведение прерывается при повороте экрана.
Какой из этих вариантов лучше? Может быть, есть лучшее решение?