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

Observer always triggered when app come from background

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

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

正如您在附图中看到的那样,片段的生命周期与 activity 的生命周期略有不同,片段进入后台会导致调用以下函数:

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

并且当回调到视图时它会调用以下函数

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

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