Firebase 在应用程序启动时需要 3 秒以上才能加载数据

6 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);
    }
});
Run Code Online (Sandbox Code Playgroud)

现在我的问题是,Firebase 获取数据的时间超过 4 秒。在上面的代码中,两个日志语句之间有 4 秒的间隙,即“Before Firebase Call”和“Call Completed”

我什至在真实设备中进行了测试,即使在那里也至少需要 3 秒。我在这里错过了什么吗?

Dou*_*son 1

第一次建立连接时会产生一些开销。连接是通过安全的 websocket 进行的,为了确保其安全,客户端和服务器之间需要多次往返。如果您的连接速度较慢,尤其是在世界上与 Firebase 服务托管地不同的地方,则很可能会出现这样的延迟。

您可以通过在应用程序启动后立即尝试从数据库读取数据来减轻一些延迟,而不是等待第一次需要数据。这将尽快启动 websocket 连接,因此第一个实际数据请求的感知延迟似乎并不那么极端。

在我的应用程序中,我使用加载屏幕(启动画面)来确保在应用程序尝试显示任何数据之前加载所有必需的数据。这也有助于减少感知的加载时间。