我在viewpager中的片段中使用livedata。我观察onActivityCreated()中的liveData并将数据显示在列表中。到目前为止一切顺利,我没有任何问题。另一方面,当我把应用程序放在后台并返回到我的viewpager的任何页面时,Observer被再次调用,我不明白为什么!请帮我理解一下。我甚至没有看过有问题的片段的onResume()。
发布于 2019-09-20 21:49:22
正如您在附加的图像中所看到的,片段的生命周期与活动的生命周期略有不同,因为片段转到后台会导致调用以下函数:
onPause() -> onStop() -> onDestroyView()当被调用回视图时,它会调用以下函数
onCreateView() -> onActivityCreated() -> onStop() -> onResume()因此,观察者在onActivityCreated()方法中再次被调用。如果您希望您的观察者不再被调用,则应将其添加到相应片段的onCreate()方法中。

发布于 2019-09-20 21:25:49
如果观察者的生命周期处于启动或恢复状态,则LiveData认为观察者处于活动状态。LiveData仅通知活动观察者有关更新的信息。注册为监视LiveData对象的非活动观察者不会收到有关更改的通知。
https://stackoverflow.com/questions/58029241
复制相似问题