我正在通过ViewModel使用实时数据。
我有一个场景,其中有两个片段和一个活动。 片段A和片段B。
在“活动”中,我启动了片段A(它显示了名称列表,即从后端获取),当我点击“名称”时,它显示了片段B(即回栈)。
现在从片段B开始,如果我按下“后退”按钮,它将返回片段A,当我在片段A的onCreate方法中实现ViewModel时,它将显示一个空白屏幕。
但是,如果我在片段A的oncreateView方法中实现了ViewModel,则由于片段未被破坏,它将继续添加观察者。
答案 0 :(得分:1)
为避免在Observers
中保留其他onCreateView
,请将getViewLifecycleOwner()
作为LifecycleOwner
传递给LiveData
的{{1}}方法。一旦observe
的{{1}}被销毁,这将删除先前的Observer
。
答案 1 :(得分:0)
您可以在片段A上添加片段B而不是替换-这样,片段A仍然有效,并且不会丢失所有数据,而且您不必调用onCreate或onCreateView。