在片段onCreateView或onCreate方法中初始化ViewModel的最佳位置是哪一个?

时间:2018-10-02 11:02:42

标签: android android-fragments

我正在通过ViewModel使用实时数据。

我有一个场景,其中有两个片段和一个活动。 片段A和片段B。

在“活动”中,我启动了片段A(它显示了名称列表,即从后端获取),当我点击“名称”时,它显示了片段B(即回栈)。

现在从片段B开始,如果我按下“后退”按钮,它将返回片段A,当我在片段A的onCreate方法中实现ViewModel时,它将显示一个空白屏幕。

但是,如果我在片段A的oncreateView方法中实现了ViewModel,则由于片段未被破坏,它将继续添加观察者。

2 个答案:

答案 0 :(得分:1)

为避免在Observers中保留其他onCreateView,请将getViewLifecycleOwner()作为LifecycleOwner传递给LiveData的{​​{1}}方法。一旦observe的{​​{1}}被销毁,这将删除先前的Observer

答案 1 :(得分:0)

您可以在片段A上添加片段B而不是替换-这样,片段A仍然有效,并且不会丢失所有数据,而且您不必调用onCreate或onCreateView。