1

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

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

4

2 回答 2

0

与我们可以使用和的原因不同AppCompatActivity或支持Fragment,不实现接口。LifecycleOwnerViewModelProvidersobserveLiveDataServiceLifecycleOwner

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

注意:还请查看 Florina 对 Service with Lifecycle 的评价:https ://github.com/googlesamples/android-architecture-components/issues/137

于 2018-03-20T05:26:46.760 回答
0

您可以使用 onLoadChildren() 方法加载数据块,使用新的分页库,它是 Android 架构组件的一部分。我写了一篇关于它的帖子,我使用游标从 MediaStore 获取 MediaItems,但同样可以使用 LiveData 完成

于 2018-06-24T19:04:59.133 回答