【发布时间】:2018-08-03 06:25:53
【问题描述】:
当我的应用离线并且我正在添加或更新文档时,内存会增加。此外,显示文档列表需要更长的时间来加载。如果我在设备在线时运行相同的代码,则内存保持一致以及具有文档列表的活动的速度。
我目前正在进行如下保存:
collectionRef.document(id).set(obj, SetOptions.merge());
或用于批处理几条记录:
batch.set(docRef1, obj1);
batch.set(docRef2, obj2);
batch.commit();
我有 onComplete 的侦听器,但在this question 的公认答案中,这似乎表明在大多数情况下侦听器是不必要的,并且当您离线时无论如何都不能等待它完成。
在另一个问题中,他们在代码中指出需要“快照”才能正确进行在线和离线保存:Offline issue with Firestore vs Firebase。但我找不到其他地方表明这是否会有所作为。我认为快照是您附加到文档或查询的东西,当您希望收到更改通知时,如果不删除它,附加这样的侦听器会导致内存泄漏。
所有这一切的另一部分是这种缓慢可能如何影响数据完整性。当我在 Android Studio 的分析器中观看时,我发现 FirestoreWorker 可以达到持续工作的程度,即使我在应用程序中没有做任何事情。我不只是说几秒钟,更像是一分钟。我可以找到离线时没有任何写入的顺序保证。尝试停止并重新启动应用程序似乎对速度没有任何影响(尽管它会重置内存)。
所有这一切都引出了一个问题:离线时在 Firestore 中添加/更新数据的正确方法是什么,以使应用的内存不会无限增长和变慢?
【问题讨论】:
标签: android google-cloud-firestore