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