这是我在正确地回答这个问题吗?
我有一个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