【发布时间】:2018-05-05 22:05:38
【问题描述】:
我想获取我所有的 json 孩子,以便我可以离线使用我的应用程序。我在我的应用程序第一次启动时进行同步。由于它在数据库中包含太多数据,我的应用程序多次崩溃并且无法获取所有数据。
致命异常:主要 进程:com.manish.firebaseexample,PID:12234 java.lang.RuntimeException:Firebase 数据库遇到 OutOfMemoryError。您可能需要减少同步到客户端的数据量(例如,通过使用查询或同步更深的路径)。见https://firebase.google.com/docs/database/ios/structure-data#best_practices_for_data_structure 和https://firebase.google.com/docs/database/android/retrieve-data#filtering_data 在 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.invokeNative(Native Method) 在 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) 在 java.lang.Thread.run(Thread.java:841)
我的数据库图片
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());
}
});
由于“图像”数据包含 Base64 编码的图像。
【问题讨论】:
-
所以扩展一个节点并更新/编辑你的问题,它有多大?每一篇都包含什么内容,你想一次读多少?
标签: android firebase firebase-realtime-database out-of-memory firebase-storage