我对 Firebase android 中的离线功能有疑问。启用 Firebase 离线功能后,
do we get all data of our Firebase app including root data or only logged-in User data as cache?
final FirebaseDatabase database = FirebaseDatabase.getInstance();
if (database != null) {
database.setPersistenceEnabled(true);
database.getReference().keepSynced(true);
}
我正在使用此代码 fragment 在应用程序类中启用离线功能
最佳答案
在这里,我从 Firebase Support Team 得到了问题的答案
Actually, the main reason, I'm getting all data (including logged-in user data and all other user's data) of my firebase app as cache in my device, because I'm using keepSynced() on root node of my database.
看看下面的代码 fragment ,我用它来启用离线功能:
final FirebaseDatabase database = FirebaseDatabase.getInstance();
if (database != null) {
database.setPersistenceEnabled(true);
database.getReference().keepSynced(true);
}
在上面的代码 fragment 中,数据库引用是对数据库根节点的引用。
现在,在这个数据库引用中,我使用了 keepSynced() 方法。因此,这会将所有数据作为设备缓存保持同步,这不是一件好事。
理想情况下,我们应该对我们的应用离线工作所必需的那些databaseReferences 使用keepSynced() 方法。
在上面的代码 fragment 中,我又犯了一个错误,那就是我在 Application 类上使用了 setPersistenceEnabled()。我应该将其移动到我的启动器 Activity 类中。
根据我上面的代码 fragment ,setPersistenceEnabled() 每次都会在应用程序首次启动时被调用。这应该在安装应用程序后仅使用一次。
我们可以像下面的代码 fragment 那样调用setPersistanceEnabled(),只调用一次。
@Override
public void onCreate() {
super.onCreate();
if (!FirebaseApp.getApps(this).isEmpty()) {
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
}
}
关于android - 在 android 中启用离线功能后,我们是否将所有 Firebase 数据作为缓存获取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42993011/