首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Firebase实时数据库数据加载太晚

Firebase实时数据库数据加载太晚
EN

Stack Overflow用户
提问于 2021-02-14 00:50:49
回答 1查看 59关注 0票数 1

我在Firebase实时数据库的表中获取数据。但是,当有大量数据时,需要几分钟才能加载。例如,500个数据需要5-6分钟。我该如何解决这个问题呢?

谢谢,致以最好的问候。

代码语言:javascript
运行
复制
  private void initCustomAdapter() {

        mPeriodsReference.addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                mPeriodsReference.keepSynced(true);
                OnlinePeriod period = dataSnapshot.getValue(OnlinePeriod.class);
                dataList.add(period);
            pageNum = 1;
                Collections.reverse(dataList);
            resfreshListView();
            Log.d("TAG","list coming" + dataList);
            }

            @Override
            public void onChildChanged(DataSnapshot dataSnapshot, String s) {

            }

            @Override
            public void onChildRemoved(DataSnapshot dataSnapshot) {

            }

            @Override
            public void onChildMoved(DataSnapshot dataSnapshot, String s) {

            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                throw error.toException();
            }

        });
        mPeriodsRecycler.setLayoutManager(new GridLayoutManager(mContext, 1));//
        mPeriodsRecycler.addItemDecoration(new GridSpacingItemDecoration(Utils.convertDPToPixel(mContext, 3)));
        mTrackAdapter = new TrackListAdapter(mContext, filterDataList);//new ArrayList<CategoryModel>()
        mPeriodsRecycler.setAdapter(mTrackAdapter);
    }
EN

回答 1

Stack Overflow用户

发布于 2021-02-14 01:06:21

通过查看给定的代码,我可以推断出,首先是将数据加载到列表dataList中,然后使用Collections.reverse(dataList);反转整个列表,这是一个开销很大的操作。

因此,一种解决方法是创建自己的反转函数来反转数组列表,因为Collections类提供的默认.reverse()效率不是很高。

您可以尝试使用下面的代码来反转list in-place (使用相同的ArrayList,从而使其更高效):

代码语言:javascript
运行
复制
public ArrayList<Integer> revArrayList(ArrayList<Integer> list) 
    { 
        for (int i = 0; i < list.size() / 2; i++) { 
            Integer temp = list.get(i); 
            list.set(i, list.get(list.size() - i - 1)); 
            list.set(list.size() - i - 1, temp); 
        } 
  
        return list; 
    } 
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66187572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档