В Kotlin есть метод расширения наблюдаем (https://code.luasoftware.com/tutorials/android/android-livedata-observe-once-only-kotlin/)), который я собираюсь повторить в Java. Насколько я понимаю, поиск в Google не позволяет использовать методы расширения Kotlin в Java (может быть неправильно), поэтому у меня есть два варианта использования SingleEventLiveData, которые я реализовал и которые мне не интересны, и удаление моего наблюдателя после его использования;
final LiveData<List<String>> stringsLiveData = mViewModel.getStrings();
stringsliveData.observe(getViewLifecycleOwner(), strings -> {
// Do stuff with data here
stringsLiveData.removeObservers(getViewLifecycleOwner());
});
Есть ли эквивалентный метод, который можно использовать как ссылку выше, так что
mViewModel.getStrings().observeOnce(getViewLifecycleOwner(), strings -> {
//Do stuff here
});
Редактировать : Согласно принятому ответу ниже (изменен для компиляции), я получил;
class LiveDataUtils {
public static <T> void observeOnce(LiveData<T> liveData, Observer<T> observer) {
liveData.observeForever(o -> {
liveData.removeObserver(observer);
observer.onChanged(o);
});
}
}
и простое использование этого;
LiveDataUtils.observeOnce(
mViewModel.getStrings(),
strings -> {
// Do some work here
}
);