当应用程序来自后台时,观察者总是触发

时间:2019-09-20 13:22:37

标签: android android-livedata observers

我在viewpager的Fragment中使用livedata。我在onActivityCreated()中观察liveData,并在列表中显示数据。到目前为止,一切都很好,我没有问题。另一方面,当我将应用程序置于后台并返回到viewpager的任何页面时,Observer再次被调用,我不明白为什么!请帮助我理解。我什至都没有讨论过有关片段的onResume()

2 个答案:

答案 0 :(得分:3)

您可以在所附的图片中看到,Fragment的生命周期与活动的生命周期几乎没有什么不同,因为fragment进入后台会导致调用以下函数:

onPause() -> onStop() -> onDestroyView()

,并在返回视图时调用以下函数

onCreateView() -> onActivityCreated() ->  onStop() -> onResume()

因此,将在onActivityCreated()方法中再次调用观察者。如果您不想再次调用观察者,则应将其添加到相应片段的onCreate()方法中。

答案 1 :(得分:0)

如果LiveData的生命周期处于STARTED或RESUMED状态,则将其视为由Observer类表示的观察者处于活动状态。 LiveData仅将有关更新的信息通知活动的观察者。注册观看LiveData对象的不活动观察者不会收到有关更改的通知。