在我的应用程序中,我正在使用Firestore侦听器来侦听对某个文档的更改。我使用LifeCycleOwner参数初始化此侦听器:
FireUtil.Events.getEvent( mEventKey ).addSnapshotListener( EventMainActivity.this, (documentSnapshot, e)
当我在另一个活动(我添加了监听器暂停的活动)中对此文档进行更改,并返回到初始活动时,更改不可见(需要重新启动活动)。
当我删除生命周期所有者参数时,会触发侦听器并且可以看到更改(但我需要手动清理侦听器)。
这是预期的行为,还是我错过了什么?
答案 0 :(得分:0)
当您使用addSnapshotListener
时,您会附加一个触发任何更改的侦听器。请参阅here官方文档。显然是onPause()
方法中的detach the listeners。
当你传递EventMainActivity
时,Cloud Firestore会在活动停止时自动为你清理听众。
有一种替代方法可以使用get()
方法来获取所需的文档,这些文档只读取一次特定文档。因为它只读一次,所以没有听众清理。
答案 1 :(得分:0)
通过将addSnapshotListener
调用(包括生命周期所有者参数)从onCreate()
移动到onStart()
方法来解决此问题。