我正在尝试制作一个使用 MediaBrowserService 播放音频的应用程序,但也使用新的架构组件来构建整个应用程序。我之前曾将 MediaBrowserService 用于另一个应用程序(https://github.com/willhwongwork/PodCast),但在该应用程序中我没有使用 OnGetRoot() 和 OnGetChildren() 方法来加载数据,我只是使用加载器或来自网络的异步任务加载数据(并且没有架构该应用程序)。
那么现在如果我想使用 LiveData 和 ViewModel 我应该如何构建代码呢?我应该在 MediaBrowserService 中使用它们并通过 OnGetRoot() 和 OnGetChildren() 方法向 UI 提供数据吗?
最佳答案
不像 AppCompatActivity
或支持Fragment
是LifecycleOwner
因此我们可以使用 ViewModelProviders
和 observe
的 LiveData
, Service
没有实现 LifecycleOwner
界面。
也就是说,有 LifecycleService它实现了 LifecycleOwner
界面。
我不认为 MediaBrowserService
实现 LifecycleOwner
因此您需要使用 ServiceLifecycleDispatcher并创建一个自定义 MediaBrowserService
.
注意:还请查看 Florina 对 Service with Lifecycle 的评价:https://github.com/googlesamples/android-architecture-components/issues/137
关于android - 如何将架构组件与 MediaBrowserService 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49358090/