Как использовать компоненты архитектуры с MediaBrowserService?
Я пытаюсь создать приложение, которое воспроизводит звук с помощью MediaBrowserService, но также использует новые компоненты архитектуры для структурирования всего приложения. Ранее я использовал MediaBrowserService для другого приложения ( https://github.com/willhwongwork/PodCast), но в этом приложении я не использовал методы OnGetRoot() и OnGetChildren() для загрузки данных, которые я просто загружаю, используя загрузчик или asynctask. из сети (и в этом приложении нет архитектуры).
Так что теперь, если я хочу использовать LiveData и ViewModel, как мне структурировать код? Должен ли я использовать их в MediaBrowserService и через методы OnGetRoot() и OnGetChildren() предоставлять данные в пользовательский интерфейс?
2 ответа
Вы можете использовать метод onLoadChildren() для загрузки фрагментов данных, используя новую библиотеку подкачки, которая является частью компонентов архитектуры Android. Я написал сообщение об этом, где я использую курсор для извлечения MediaItems из MediaStore, но то же самое можно сделать и с LiveData.
В отличие от AppCompatActivity
или поддержка Fragment
которые LifecycleOwner
благодаря которому мы можем использовать ViewModelProviders
а также observe
из LiveData
, Service
не реализует LifecycleOwner
интерфейс.
Тем не менее, есть LifecycleService, который реализует LifecycleOwner
интерфейс. Я не думаю, что MediaBrowserService
реализует LifecycleOwner
следовательно, вам нужно использовать ServiceLifecycleDispatcher и создать собственный MediaBrowserService
,
Примечание: Пожалуйста, обратите внимание на то, что Флорина говорит о Сервисе с жизненным циклом: https://github.com/googlesamples/android-architecture-components/issues/137