我遇到了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存储,并且观察者会再次得到通知。
我们可以做些什么,以便在可变实时数据发生变化时“仅”通知片段?