我在 firebase 中有我的只读数据,大约 50KB。 我需要有关应用程序启动的完整数据。为此,我在 onCreate 方法中编写了以下代码
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference();
Log.i("FIREBASE", "Before Firebase Call");
myRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.i("FIREBASE", "Call Completed");
// do my work i.e build my UI
}
@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(context, "Please Check your Internet connection", Toast.LENGTH_LONG);
}
});
现在我的问题是,Firebase 获取数据的时间超过 4 秒。在上面的代码中,两个日志语句之间有 4 秒的间隔,即“Before Firebase Call”和“Call Completed”
我什至在真实设备上进行了测试,即使在那里也需要至少 3 秒。 我在这里遗漏了什么吗?
最佳答案
正如 Doug Stevenson 所说:当您第一次加载数据时,或者如果您所在的世界的某个地方与托管 Firebase 服务的地方不同,应该会有一点延迟。
我建议您创建一个加载屏幕(启动画面)以在显示主 Activity 之前加载所有数据。
在此加载 Activity 中,您可以使用 keepSynced
方法加载所有数据:
FirebaseDatabase.getInstance().getReference().keepSynced(true);
此方法会将您的整个数据库下载到磁盘缓存中。当您显示 Main Activity 时,FIrebase 将从该缓存中加载数据。
通常,加载屏幕会在屏幕上停留 1000-1500 毫秒。但是既然你说数据需要 3 秒,我建议创建一个加载屏幕来播放 3000 毫秒的动画(或一组结合了最后 3000 毫秒的动画)。如果您不会制作动画,可以观看Chet Haase's DevBytes video .
关于android - 应用程序启动时的 Firebase 需要超过 3 秒才能加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41939769/