4

我遇到了 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 存储并且再次通知观察者。

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

4

0 回答 0