android - 如何将架构组件与 MediaBrowserService 一起使用?

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

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

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

最佳答案

不像 AppCompatActivity或支持FragmentLifecycleOwner因此我们可以使用 ViewModelProvidersobserveLiveData , 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/

相关文章:

Android:Listview在滚动时显示错误的图像

android - EditText.getText() 是否曾经返回 null?

matlab - 滤波后低频移位

javascript - After Effects 脚本 - 将音频转换为关键帧?

audio - 在 Android (1.5) 中禁用麦克风的噪音消除?

Android - 停止 MediaPlayer 下载更多内容但继续播放缓冲内容

java - 定时拍照(Android Camera API)

java - 如何让媒体播放器继续播放相同的音轨而不是在 Android 中启动另一个音轨

Android FFmpegMediaPlayer - MediaPlayer 错误(0, 0)

javascript - Can (Html5,javascript,css3) 应用程序将在 ios 和 android 上完美运行