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, и наблюдатели снова получают уведомление.

Есть ли что-то, что мы можем сделать так, чтобы фрагмент был "только" уведомлен, когда изменяемые живые данные изменились?

0 ответов