我正在尝试创建一个使用MediaBrowserService播放音频的应用,但也使用新的Architecture Components来构建整个应用。我之前使用MediaBrowserService用于另一个应用程序(https://github.com/willhwongwork/PodCast)但是在那个应用程序中我没有使用OnGetRoot()和OnGetChildren()方法来加载数据我只是使用loader或asynctask从网络加载数据(并且没有该app中的架构。)
现在,如果我想使用LiveData和ViewModel,我应该如何构建代码?我应该在MediaBrowserService中使用它们吗?通过OnGetRoot()和OnGetChildren()方法向UI提供数据?
答案 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完成