当数据未发生变化时,Android ViewModel / MutableLiveData onChanged将在新片段中调用

时间:2017-12-14 02:17:54

标签: android android-fragments android-architecture-components android-livedata android-viewmodel

我遇到了Android Mutable Live Data的问题,可能是因为我的理解不足。方案是我的Android选项卡中有3个列表。

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方法,但似乎数据由LiveData存储,并且观察者会再次得到通知。

我们可以做些什么,以便在可变实时数据发生变化时“仅”通知片段?

0 个答案:

没有答案