android 从firebase检索数据需要太多时间

46qrfjad  于 11个月前  发布在  Android
关注(0)|答案(4)|浏览(126)

我想检索Firebase数据到textview、imageview和listview。
https://i.stack.imgur.com/JURr3.png
因此,我将用户名添加到textview,将个人资料照片添加到imageview,将生日添加到textview,还有许多其他节点,如消息和其他用户名(在活动中)。
它需要很多时间来检索数据到每个视图,然后它会同时显示所有数据。它不会在加载后同时显示每个数据,而是在加载后将所有请求的数据显示给所有视图。
如何在视图加载和显示后获取视图?
获取数据后该Activity的UI。(删除日期和某些数据尚未添加)。
https://i.stack.imgur.com/GRX0O.png
使用默认图像和文本检索时:
https://i.stack.imgur.com/iEhv9.png

sz81bmfz

sz81bmfz1#

使用Sqlite作为本地数据库来存储您的数据,以及使用Firebase实时数据库。每次数据首次加载时,它也将存储在本地数据库中。因此,下次您打开应用程序时,您将看到您期望的结果。
然后,如果您使用Firebase Realtime Database作为后端,请使用Firebase Offline Data Handling功能。

5jvtdoz2

5jvtdoz22#

您可以在Firebase中启用脱机数据,这样每次都不需要首先从服务器重新加载。首先,您从该高速缓存源填充数据,然后从服务器源静默加载数据。
Enable Offline Data in Firebase

wf82jlnq

wf82jlnq3#

不要直接从客户端访问Firebase数据,因为无意中实现和使用Firestore API可能会导致身份验证和性能问题。
相反,使用Firebase cloud functions并为您需要的内容编写服务。要从应用程序调用这些服务,您可以使用Firebase calls。您可能会遇到冷 Boot ,但您可以通过预热过程解决它。使用可以通过cron-job.org设置的cron作业每分钟调用这些函数

nkhmeac6

nkhmeac64#

不确定你是如何处理数据的,理想情况下,这应该是你应该做的一系列步骤。
1.从该节点获取所有数据(包括所有子数据)并将其放入列表中。
1.将数据传递到一个DataView并填充它,这不会有任何延迟。
这是获取所有子节点的示例代码

myQuery.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
            // TODO: Add to list to send it to recyclerview
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        // Getting Post failed, log a message
        Log.w(TAG, "loadPost:onCancelled", databaseError.toException());     
    }
});

字符串
希望这能帮到你。

相关问题