我对Firebase android中的离线功能存有疑问。启用Firebase脱机功能后,
我们是否获取Firebase应用的所有数据,包括根数据或仅包含根数据 登录用户数据作为缓存?
final FirebaseDatabase database = FirebaseDatabase.getInstance();
if (database != null) {
database.setPersistenceEnabled(true);
database.getReference().keepSynced(true);
}
我正在使用此代码段在Application类中启用脱机功能
答案 0 :(得分:3)
在这里,我从Firebase Support Team
得到了我的问题的答案实际上,主要原因是,我获取了所有数据(包括已登录的数据) 我的firebase应用程序的用户数据和所有其他用户数据)作为我的缓存 设备,因为我在数据库的根节点上使用了keepSynced()。
请查看以下代码段,我将其用于启用离线功能:
final FirebaseDatabase database = FirebaseDatabase.getInstance();
if (database != null) {
database.setPersistenceEnabled(true);
database.getReference().keepSynced(true);
}
与上面的代码段一样,数据库引用引用了数据库的根节点。
现在,在这个数据库参考上,我使用 keepSynced()方法。因此,这会将所有数据保持同步作为设备中的缓存,这不是一件好事。
理想情况下,我们应该对我们的应用离线工作所需的 databaseReferences 使用 keepSynced()方法。
在上面的代码片段中,我犯了一个错误,即我在Application类上使用 setPersistenceEnabled()。我应该在我的启动器Activity类上移动它。
根据我上面的代码段,当app首次启动时,每次都会调用 setPersistenceEnabled()。这应该只在安装应用程序后使用一次。
我们可以像下面的代码段一样调用 setPersistanceEnabled()来调用它。
@Override
public void onCreate() {
super.onCreate();
if (!FirebaseApp.getApps(this).isEmpty()) {
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
}
}
答案 1 :(得分:0)