使用LifeCycleOwner参数初始化的Firestore侦听器在活动暂停时未命中更新

时间:2017-12-06 21:52:19

标签: java android firebase google-cloud-firestore

在我的应用程序中,我正在使用Firestore侦听器来侦听对某个文档的更改。我使用LifeCycleOwner参数初始化此侦听器:

FireUtil.Events.getEvent( mEventKey ).addSnapshotListener( EventMainActivity.this, (documentSnapshot, e)

当我在另一个活动(我添加了监听器暂停的活动)中对此文档进行更改,并返回到初始活动时,更改不可见(需要重新启动活动)。

当我删除生命周期所有者参数时,会触发侦听器并且可以看到更改(但我需要手动清理侦听器)。

这是预期的行为,还是我错过了什么?

2 个答案:

答案 0 :(得分:0)

当您使用addSnapshotListener时,您会附加一个触发任何更改的侦听器。请参阅here官方文档。显然是onPause()方法中的detach the listeners

当你传递EventMainActivity时,Cloud Firestore会在活动停止时自动为你清理听众。

有一种替代方法可以使用get()方法来获取所需的文档,这些文档只读取一次特定文档。因为它只读一次,所以没有听众清理。

答案 1 :(得分:0)

通过将addSnapshotListener调用(包括生命周期所有者参数)从onCreate()移动到onStart()方法来解决此问题。