Android体系结构组件:LiveData即服务观察者

时间:2018-12-23 22:06:21

标签: android android-service android-support-library android-livedata androidx

这是我在正确地回答这个问题吗?

我有一个MediaPlayer服务来播放音频。由于需求不多,这是一个回调地狱,监听器太多。

例如: 目前,我有一个音频路由按钮,可以在听筒和扬声器之间切换音频路由。我目前使用绑定服务,并通过UI在服务上调用reRouteAudio()方法,并听取回调结果,以便更改路由按钮上的图标和操作。

为了测试它是否更干净,我将上述流程更改为LiveData实现。

我已经创建了一个名为PlayerServiceLiveData的单例并遵循以下方法

<briefing>
  <date>1999-05-31</date>
  <supplier>supplier_0</supplier>
  <customer>customer_0</customer>
</briefing>

我在与的活动中观察到这一点

public void updateAudioRoute(AudioRoute audioRoute) {
    this.audioRoute.postValue(audioRoute);
}

public LiveData<AudioRoute> getAudioRoute() {
    return audioRoute;
}

使用以下命令从服务中进行更新

PlayerServiceLiveData.getInstance().getAudioRoute().observe(this, new Observer<AudioRoute>() {
        @Override
        public void onChanged(AudioRoute audioRoute) {
            if (App.DEBUG) {
                AppHelper.Log(TAG, "AudioRoute updated to: " + audioRoute);
            }
        }
    });

它看起来工作正常,看起来更干净。

所以,我的问题是:这是一种可以/健康的方式吗? 我认为这是正确的做法,因为Google也deprecating LocalBroadcastManager

0 个答案:

没有答案