java如何让Firestore在后台同步?
我的应用程序大多在户外使用,因此如果没有互联网,就会出现Firestore
加载问题。当用户返回家中时,他将拥有wifi,但应用程序已关闭且不会同步。同样,当用户外出并打开应用程序时,可能没有互联网连接,循环继续
在后台同步Firestore
的最佳方式是什么?有BroadcastReceiver
选项,但声明应使用WorkManager
。还有LiveData
,但我找不到Java示例,所以。。。什么是最好的?(举个例子就好了)
编辑我不得不删除一些东西,因为我的问题“不够集中”
# 1 楼答案
当用户没有internet连接时,应该不会出现任何问题,这是因为Firestore has its own default caching mechanism:
你说:
除非您正在侦听实时更改,否则它不会同步。除此之外,始终建议根据活动的生命周期删除列表器。因此,如果您正在使用addSnapshotListener(),您将附加一个侦听器,该侦听器将为数据库中发生的每个更改调用。因此,当你的应用程序关闭时,这种情况也会发生。不删除侦听器可能会产生不需要的账单。因此,必须在活动被销毁之前detach the listeners。有关更多信息,请查看以下链接:
#1。不建议这样做。但是,JobDispatcher已过时,不再可用,而不是BroadcastReceiver类。但是如果需要,您应该使用WorkManager。如果您必须绝对使用JobDispatcher,我建议您不要使用它,那么源代码将被归档here。因此,请阅读有关how to migrate from JobDispatcher to WorkManager的内容
#2
每个数据库都有自己的Security Rules。因此,您应该根据需要选择保护您的数据。但是,没有涉及到期日期,但您可以使用以下内容:
限制对数据库的访问,直到明天、2021年8月5日。
#3。您也可以在没有安全规则的情况下使用数据库。但最有可能的是你应该考虑使用它们。很可能您不应该使用用户名或电子邮件地址,而应该使用来自身份验证过程的UID
#4。是的,每一次CRUD操作都会计入您的免费配额。是的,即使查询没有结果,也至少要读取一个文档。因此,如果查询没有返回任何结果,you have to pay one document read