我刚刚意识到,只需一行代码,我就可以在线和离线使用我的应用程序来访问Firebase数据库(learned here)。
我正在开发一个应用程序,作为MVP和Firebase研究,并且正在使用以下两种方法来离线授予访问权限:
FirebaseDatabase database = FirebaseDatabase.getInstance();
database.setPersistenceEnabled(true);
DatabaseReference reference = getFirebaseDatabaseInstance().getReference();
reference.keepSynced(true);
所以,我的问题是:
同时使用这两种方法是否正确?还是应该只使用setPersistenceEnabled(true)
?
我注意到,如果我使用keepSynced(true)
,则每次更改为另一个“活动/片段”时,我的应用都避免加载。
答案 0 :(得分:0)
setPersistenceEnabled(true)
和keepSynced(true)
做两件事。
setPersistenceEnabled(true)
打开查询结果的磁盘缓存。只要有可能,就会使用缓存的结果,而不是再次从服务器获取它们。
keepSynced(true)
与将侦听器添加到相同位置而不删除它完全相同。因此,只要该位置有可用的更新,SDK就会下载它们并调用对该数据感兴趣的其他任何侦听器。
是否应使用其中之一取决于您是否要使用它们的既定目的。它们的功能没有重叠,除了如果两者都启用,则keepSynced
位置的所有更新也都缓存在磁盘上,这在合计它们的功能时是合乎逻辑的。