我正在尝试制作一个既能播放MediaBrowserService音频又能使用新的架构组件构建整个应用程序的应用程序。我以前在另一个应用程序(https://github.com/willhwongwork/PodCast)中使用过MediaBrowserService,但在那个应用程序中,我没有使用OnGetRoot()和OnGetChildren()方法加载数据,我只是使用loader或asynctask从网络加载数据(并且该应用程序中没有体系结构)。
那么现在,如果我想使用LiveData和ViewModel,我应该如何构造代码呢?我是否应该在MediaBrowserService中使用它们,并通过OnGetRoot()和OnGetChildren()方法将数据提供给UI?
发布于 2018-03-20 13:26:47
不像AppCompatActivity或support Fragment是LifecycleOwner,因为我们可以使用ViewModelProviders和LiveData的observe,Service不实现LifecycleOwner接口。
也就是说,有实现LifecycleOwner接口的LifecycleService。我不认为MediaBrowserService实现了LifecycleOwner,因此您需要使用ServiceLifecycleDispatcher并创建一个自定义的MediaBrowserService。
注意:也请看一下弗洛丽娜对生命周期服务的看法:https://github.com/googlesamples/android-architecture-components/issues/137
发布于 2018-06-25 03:04:59
您可以使用onLoadChildren()方法加载数据块,使用新的Paging library,它是Android Architecture组件的一部分。我写了一个关于它的post,其中我使用游标从MediaStore获取MediaItems,但是同样的事情也可以用LiveData来完成
https://stackoverflow.com/questions/49358090
复制相似问题