Firebase上的setPersistenceEnabled和keepSynced有什么区别?

时间:2019-03-06 04:01:43

标签: java android firebase firebase-realtime-database

我刚刚意识到,只需一行代码,我就可以在线和离线使用我的应用程序来访问Firebase数据库(learned here)。

我正在开发一个应用程序,作为MVP和Firebase研究,并且正在使用以下两种方法来离线授予访问权限:

FirebaseDatabase database = FirebaseDatabase.getInstance();
database.setPersistenceEnabled(true);

DatabaseReference reference = getFirebaseDatabaseInstance().getReference();
reference.keepSynced(true);

所以,我的问题是:

同时使用这两种方法是否正确?还是应该只使用setPersistenceEnabled(true)

我注意到,如果我使用keepSynced(true),则每次更改为另一个“活动/片段”时,我的应用都避免加载。

1 个答案:

答案 0 :(得分:0)

setPersistenceEnabled(true)keepSynced(true)做两件事。

setPersistenceEnabled(true)打开查询结果的磁盘缓存。只要有可能,就会使用缓存的结果,而不是再次从服务器获取它们。

keepSynced(true)与将侦听器添加到相同位置而不删除它完全相同。因此,只要该位置有可用的更新,SDK就会下载它们并调用对该数据感兴趣的其他任何侦听器。

是否应使用其中之一取决于您是否要使用它们的既定目的。它们的功能没有重叠,除了如果两者都启用,则keepSynced位置的所有更新也都缓存在磁盘上,这在合计它们的功能时是合乎逻辑的。