Android Firebase数据库OutofMemory错误

Android Firebase数据库OutofMemory错误,android,firebase,firebase-realtime-database,out-of-memory,firebase-storage,Android,Firebase,Firebase Realtime Database,Out Of Memory,Firebase Storage,我想获取我所有的json子对象,这样我就可以将我的应用程序脱机。我在应用程序首次启动时进行同步。由于数据库中包含太多数据,我的应用程序多次崩溃,无法获取所有数据 致命异常:主 进程:com.manish.firebaseexample,PID:12234 java.lang.RuntimeException:Firebase数据库遇到OutOfMemoryError。您可能需要减少同步到客户端的数据量(例如,通过使用查询或同步更深的路径)。看到和 位于com.google.android.gms

我想获取我所有的json子对象,这样我就可以将我的应用程序脱机。我在应用程序首次启动时进行同步。由于数据库中包含太多数据,我的应用程序多次崩溃,无法获取所有数据

致命异常:主 进程:com.manish.firebaseexample,PID:12234 java.lang.RuntimeException:Firebase数据库遇到OutOfMemoryError。您可能需要减少同步到客户端的数据量(例如,通过使用查询或同步更深的路径)。看到和 位于com.google.android.gms.internal.zzdyi.run(未知来源) 位于android.os.Handler.handleCallback(Handler.java:733) 位于android.os.Handler.dispatchMessage(Handler.java:95) 位于android.os.Looper.loop(Looper.java:146) 位于android.app.ActivityThread.main(ActivityThread.java:5602) 位于java.lang.reflect.Method.Invokenactive(本机方法) 位于java.lang.reflect.Method.invoke(Method.java:515) 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)上 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) 在dalvik.system.NativeStart.main(本机方法) 原因:java.lang.OutOfMemoryError 位于java.lang.AbstractStringBuilder.enlargeBuffer(AbstractStringBuilder.java:94) 位于java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:145) 在java.lang.StringBuilder.append中(StringBuilder.java:216) 在bma.toString(:com.google.android.gms)。DynamiteModulesC@11746036:11) 在bkq.a(:com.google.android.gms。DynamiteModulesC@11746036:82) 在bkv.run(:com.google.android.gms)。DynamiteModulesC@11746036:9) 位于java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422) 位于java.util.concurrent.FutureTask.run(FutureTask.java:237) 位于java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152) 位于java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265) 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 运行(Thread.java:841)

我的数据库映像


由于“图像”数据包含Base64编码的图像。

如错误消息所述,您正在检索的数据超过了手机内存中可扩展的数据量。有两种方法可以解决这个问题

  • 释放手机内存以存储更多数据
  • 使用其中一种筛选方法筛选数据

  • 请参阅有关Firebase内过滤数据的说明。

    如错误消息所示,您正在检索的数据超过了手机内存中可扩展的数据量。有两种方法可以解决这个问题

  • 释放手机内存以存储更多数据
  • 使用其中一种筛选方法筛选数据

  • 请参阅有关Firebase内过滤数据的说明。

    因此,请在“品种”中展开一个节点,并更新/编辑您的问题,说明其大小?每一个都包含哪些内容,以及您一次要阅读多少内容?因此,请在“变体”中展开一个节点,并用问题的大小更新/编辑您的问题?每本书都包含什么?你一次要读多少本?另一个有用的答案,如果这对任何人都不管用的话。另一个有用的答案,如果这对任何人都不起作用的话。
     refDatabase = FirebaseDatabase.getInstance().getReference().child("INT").child("varieties");
        refDatabase.keepSynced(true);
    
    
        refDatabase.getRef().addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                Log.d(TAG,""+dataSnapshot.toString());
            }
    
            @Override
            public void onCancelled(DatabaseError databaseError) {
                Log.d(TAG,databaseError.getMessage());
            }
        });