Android, я должен сделать MediaPlayer сервисом? - PullRequest
1 голос
/ 06 октября 2010

Я пытаюсь написать приложение для Android, которое позволит пользователям слушать радиостанции.

У меня есть кнопки запуска и остановки, и он воспроизводит поток. Если я нажму клавишу «Домой» и начну делать другие фрагменты с телефоном, поток продолжит воспроизведение. Вот как я хочу, чтобы это работало.

Стоит ли создавать сервис для воспроизведения потока или метод, который я уже использую, достаточно хорош? Какую пользу принесет это в службе? Многие учебные пособия и примеры в Интернете, похоже, используют сервисы, но мне кажется, что они просто добавляют дополнительные сложности в код. Или это более эффективно?

С уважением, David

1 Ответ

2 голосов
/ 06 октября 2010

Вам не нужно использовать службу, но ваши пользователи могут при обычном использовании обнаружить, что воспроизведение неожиданно останавливается, это зависит от обычного варианта использования, поэтому услуга - лучший подход.

Причина в том, что на данный момент к вашей активности подключен потоковый объект / медиаплеер.

В какой-то момент система полностью отключит активность теперь, когда она больше не видна пользователю, и как только GC произойдет, воспроизведение остановится. Это произойдет в зависимости от нагрузки на память и других действий пользователя, таких как запуск других приложений. Службам разрешается более продолжительный срок службы, в общем они будут выпущены только после того, как будут выпущены все другие фоновые действия, но перед активностью на переднем плане. Более полное описание правил жизненного цикла процессов в Сервисах можно найти в документации по Android здесь.

Возможно, вы также захотите взглянуть на PowerManager и использовать PARTIAL_WAKE_LOCK, который позволит продолжить воспроизведение, когда трубка будет нормально спать (за счет времени автономной работы).

...