Это скорее вопрос, который я делаю правильно.
У меня есть служба MediaPlayer для воспроизведения звука.Из-за небольшого количества требований, это ад обратного вызова со слишком большим количеством слушателей.
Например: В настоящее время у меня есть кнопка аудио маршрута, чтобы переключать аудио маршрутизацию между наушником и громкоговорителем.В настоящее время я использую привязанный сервис и вызываю метод reRouteAudio () on on service из своего пользовательского интерфейса и слушаю обратный вызов для получения результата, чтобы я мог изменить значок и действие на кнопке маршрута.
Чтобы проверить, будет ли он чищеЯ изменил выше поток на реализацию LiveData.
Я создал синглтон с именем PlayerServiceLiveData и следующими методами
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);
}
}
});
Обновление из Службы с помощью
PlayerServiceLiveData.getInstance().updateAudioRoute(currentAudioRoute);
Кажется, что он работает нормально и выглядит намного чище.
Итак, мой вопрос: это нормально / Здорово?Правильно ли я думаю, что это путь, так как Google также устарел LocalBroadcastManager