如何将Architecture Components与MediaBrowserService一起使用?

时间:2018-03-19 07:55:20

标签: android audio android-mediaplayer android-architecture-components mediabrowserservice

我正在尝试创建一个使用MediaBrowserService播放音频的应用,但也使用新的Architecture Components来构建整个应用。我之前使用MediaBrowserService用于另一个应用程序(https://github.com/willhwongwork/PodCast)但是在那个应用程序中我没有使用OnGetRoot()和OnGetChildren()方法来加载数据我只是使用loader或asynctask从网络加载数据(并且没有该app中的架构。)

现在,如果我想使用LiveData和ViewModel,我应该如何构建代码?我应该在MediaBrowserService中使用它们吗?通过OnGetRoot()和OnGetChildren()方法向UI提供数据?

2 个答案:

答案 0 :(得分:0)

AppCompatActivity或支持Fragment LifecycleOwner不同,因为我们ViewModelProviders observe LiveData Service LifecycleOwner 1}}没有实现LifecycleOwner接口。

也就是说,LifecycleService实现了MediaBrowserService接口。 我不认为LifecycleOwner实现了MediaBrowserService,因此您需要使用ServiceLifecycleDispatcher并创建自定义width

注意:请注意Florina对Life with Lifecycle的说法:https://github.com/googlesamples/android-architecture-components/issues/137

答案 1 :(得分:0)

您可以使用新的Paging library(它是Android体系结构组件的一部分),使用onLoadChildren()方法加载数据块。我写了一个post关于它的内容,在这里我使用光标从MediaStore中获取MediaItem,但是同样可以使用LiveData完成