При создании класса Android Mobile Music MusicService создается MediaBrowserService, который автоматически реализуется в GetRoot и onLoadChildren. Можно ли дать подробное объяснение, как все работает.Я разрабатываю Android Auto Media App и не в состоянии понять жизненный цикл MediaBrowserService
ответ
Жизненный цикл MediaBrowserService
выглядит жизненный цикл простого Service
которой он выступает. From documentation:
жизненный цикл MediaBrowserService контролируется, как она создается, число клиентов, которые имеют это к нему, а также вызовы , которые он получает из СМИ сессии обратных вызовов. Подводя итог:
- Услуга создается, когда он запускается в ответ на кнопки медиа или когда активность связывается с ним (после соединения его с помощью MediaBrowser).
- Сессия средств массовой информации onPlay() обратного вызова должна включать код, который вызывает startService(). Это гарантирует, что служба запустится и продолжит выполнение , даже если все действия UI MediaBrowser связаны с ней unbind.
- Обратный вызов onStop() должен вызвать stopSelf(). Если служба была запущена, это останавливает ее. Кроме того, служба уничтожается, если не связаны с ней. В противном случае служба остается связанной , пока все ее действия не отвяжутся. (Если последующий StartService() вызов принимается до того, как услуга будет уничтожена, отложенный стоп отменен.)
Следующая блок-схема показывает, как жизненный цикл сервиса является удалось. Переменный счетчик отслеживает количество связанных клиентов:
onGetRoot
и onLoadChildren
, используемое для manage client connections.
Но для использования MediaBrowserService этого недостаточно, поэтому вы должны прочитать this documentation (следуйте вложенным ссылкам).
Взятые из MusicPlayer.java:
Этот класс обеспечивает MediaBrowser через службу. Он предоставляет библиотеку средств массовой информации для клиента просмотра, через onGetRoot и onLoadChildren методов
onGetRoot (..): Возвращает корневой идентификатор, если клиентский пакет имеет разрешения на доступ к информации в СМИ (Возвращает нулевое значение, если клиент не допускается). Source
onLoadChildren: Возвращает список дочерних элементов мультимедийного объекта. Source
Чтобы получить представление о реализации и проверки реализации в MusicPlayer.java