【问题标题】:How do I use Architecture Components with MediaBrowserService?如何将架构组件与 MediaBrowserService 一起使用?
【发布时间】:2018-03-19 07:55:20
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    AppCompatActivity 或支持 LifecycleOwnerFragment 不同,因此我们可以使用 LiveDataViewModelProvidersobserveService 没有实现 LifecycleOwner 接口。

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-09-28
        • 2018-11-17
        • 2020-06-19
        • 1970-01-01
        • 2011-07-13
        • 2018-10-24
        • 2023-03-17
        • 2021-07-14
        相关资源
        最近更新 更多