在片段中在哪里设置 Firebase AddValueEventListener?

Van*_*Tan 2 android android-fragments firebase firebase-realtime-database

我正在创建一个带有从 Firebase 中提取数据的片段的 android 应用程序。

目前,我已经addValueEventListeneronStart()方法内部设置了我的方法,该方法能够在第一次访问片段时从 Firebase 提取数据,但是当我更改为查看应用程序中的其他片段并返回到原始片段时,Firebase 数据消失,直到我旋转屏幕。

我应该在哪里放置我的AddValueEventListener方法来解决这个问题?

A.Z*_*dan 5

简短回答:将它添加到onResume方法中并在onPause方法中删除它。

长答案: 片段由 FragmentManager 管理,在大多数情况下,它会保留片段的一个实例,这样就不需要在每次想要显示它时都创建一个新片段。所以方法onCreateonCreateViewonStart将被调用一次上创建片段或结构变更,即屏幕旋转。

另一方面,onResume每次片段获得焦点时都会调用方法,因此addValueEventListener将始终调用添加。但是,这将导致添加多个值甚至侦听器,因此removeEventListeneronPause方法中将是一个很好的做法。

请参阅:https : //developer.android.com/guide/components/fragments.html