我在viewpager的Fragment中使用livedata
。我在onActivityCreated()
中观察liveData,并在列表中显示数据。到目前为止,一切都很好,我没有问题。另一方面,当我将应用程序置于后台并返回到viewpager的任何页面时,Observer
再次被调用,我不明白为什么!请帮助我理解。我什至都没有讨论过有关片段的onResume()
。
答案 0 :(得分:3)
您可以在所附的图片中看到,Fragment的生命周期与活动的生命周期几乎没有什么不同,因为fragment进入后台会导致调用以下函数:
onPause() -> onStop() -> onDestroyView()
,并在返回视图时调用以下函数
onCreateView() -> onActivityCreated() -> onStop() -> onResume()
因此,将在onActivityCreated()方法中再次调用观察者。如果您不想再次调用观察者,则应将其添加到相应片段的onCreate()方法中。
答案 1 :(得分:0)
如果LiveData的生命周期处于STARTED或RESUMED状态,则将其视为由Observer类表示的观察者处于活动状态。 LiveData仅将有关更新的信息通知活动的观察者。注册观看LiveData对象的不活动观察者不会收到有关更改的通知。