android - 应用程序启动时的 Firebase 需要超过 3 秒才能加载数据

标签 android firebase firebase-realtime-database

我在 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/

相关文章:

android - 有没有办法检测应用程序是否通过后退按钮关闭?

android - 插件不支持该项目的 cordova-android 版本。 cordova-android : 4. 1.1,失败的版本要求 : >=5. 0.0-dev

android - 获取用于从 Android 设备连接到 Firebase 的 IP 地址

javascript - function.database() 和 admin.database() 之间有什么区别

java - 使用 Firebase 适配器填充 ListView

android - 链接预建静态库 ndk 与 Android 源代码

android - BuildConfig.DEBUG 总是返回 false

android - 获取 firebase 缓存的大小

android - 由于缺少方法导致的预启动报告失败(在 com.google.android.apps.mtaas.crawler-1/base.apk 中)

Firebase - ChildAutoById 创建的键下属性的索引规则