Android ViewModel/MutableLiveData onChanged вызывается в новом фрагменте, когда данные не изменились
У меня проблема с изменяемыми живыми данными Android, возможно, из-за моего плохого понимания. Сценарий таков: у меня есть 3 списка в моих вкладках Android.
public void openSort(SortType sortType) {
mSortType.postValue(sortType);
}
public MutableLiveData<SortType> getOpenSort() {
return mSortType;
}
В моей деятельности у меня открыт первый фрагмент. В том, что я называю
public void openSort(SortType sortType)
Пока все отлично работает. Затем я продолжаю и открываю другую вкладку со вторым фрагментом. Этот второй фрагмент в его
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SortOrderViewModel sortOrderViewModel = ViewModelProviders.of(getActivity()).get(SortOrder.class);
sortOrderViewModel.observe(this, new Observer() {
@Override
public void onChanged(SortType sortType) {
// Debug print
}
})
}
По какой-то причине вызывается также onChanged второго фрагмента. Я предположил, что метод onChanged вызывается только при изменении данных в модели представления, но кажется, что данные хранятся в Live Data, и наблюдатели снова получают уведомление.
Есть ли что-то, что мы можем сделать так, чтобы фрагмент был "только" уведомлен, когда изменяемые живые данные изменились?