我已经注册了一个侦听器,用于侦听查询的更改。删除/删除文档后,它需要检查更改是否是本地的。如果更改是本地更改,则会显示一条消息。如果不是本地对象,则仅删除该对象。
问题在于,在侦听器中检查时,hasPendingWrites()
返回false
。这是为什么?根据Firestore的文档,应该是第一次true
,因为在更改本地缓存后会立即触发侦听器。
AsyncArrayHandler的简化代码,在激活侦听器时调用:
for (DocumentChange documentChange : queryDocumentSnapshots.getDocumentChanges())
{
changeIsMadeLocal = documentChange.getDocument().getMetadata().hasPendingWrites();
switch (documentChange.getType())
{
case REMOVED:
if (changeIsMadeLocal)
{
//do stuff here
}
break;
}
}
最佳答案
对于遇到与我相同的问题的每个人(看着视图,几乎没有人),Firebase正在研究它,看来这只是在某些设备和模拟器上存在的错误。他们不太确定它的来源,但试图找出答案。
当他们给我更多信息时,我将编辑此答案。