Nik*_*ola 5 java android firebase firebase-realtime-database
我正在尝试使用google firebase实时数据库.我的用户可以创建我想要在数据库上作为单独的表以及在用户类中作为列表的事件.这是我用来将事件写入数据库以及发生异常的地方:
mDatabase.child("users").child(ResourceManager.getUser().getId()).child("events").setValue(event);
mDatabase.child("events").setValue(ResourceManager.getAllEvents());
Run Code Online (Sandbox Code Playgroud)
问题是,当我尝试保存创建的事件时,我开始收到垃圾收集工作几次的消息,然后在应用程序重新启动时打印100次相同的异常.
06-30 18:38:19.555 15005-15005/tvfriends.kolio.com.tvproba E/AndroidRuntime: at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaD(Unknown Source)
at com.google.android.gms.internal.zzaix$zza.zzaE(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaD(Unknown Source)
at com.google.android.gms.internal.zzaix$zza.zzaE(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaD(Unknown Source)
at com.google.android.gms.internal.zzaix$zza.zzaE(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaD(Unknown Source)
at com.google.android.gms.internal.zzaix$zza.zzaE(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaD(Unknown Source)
at com.google.android.gms.internal.zzaix$zza.zzaE(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaD(Unknown Source)
at com.google.android.gms.internal.zzaix$zza.zzaE(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaD(Unknown Source)
at com.google.android.gms.internal.zzaix$zza.zzaE(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaD(Unknown Source)
at com.google.android.gms.internal.zzaix$zza.zzaE(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaD(Unknown Source)
at com.google.android.gms.internal.zzaix$zza.zzaE(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaD(Unknown Source)
at com.google.android.gms.internal.zzaix$zza.zzaE(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaD(Unknown Source)
at com.google.android.gms.internal.zzaix$zza.zzaE(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzav(Unknown Source)
at com.google.firebase.database.DatabaseReference.zza(Unknown Source)
at com.google.firebase.database.DatabaseReference.setValue(Unknown Source)
at tvfriends.kolio.com.tvproba.HostActivity.onClick(HostActivity.java:109)
at android.view.View.performClick(View.java:5609)
at android.view.View$PerformClick.run(View.java:22238)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6044)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Run Code Online (Sandbox Code Playgroud)
同样在顶部异常结束时,我得到另一个
06-30 18:38:21.478 15005-15005/tvfriends.kolio.com.tvproba D/Error: ERR: TOTAL BYTES WRITTEN: 13034964
06-30 18:38:21.484 15005-15005/tvfriends.kolio.com.tvproba E/JavaBinder: !!! FAILED BINDER TRANSACTION !!! (parcel size = 13035048)
06-30 18:38:21.485 15005-15005/tvfriends.kolio.com.tvproba E/AndroidRuntime: Error reporting crash
android.os.TransactionTooLargeException: data parcel size 13035048 bytes
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(Binder.java:615)
at android.app.ActivityManagerProxy.handleApplicationCrash(ActivityManagerNative.java:5100)
at com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:97)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1068)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1063)
Run Code Online (Sandbox Code Playgroud)
在我的Event类中,我尝试存储这些变量:
private TVEvent tvEvent;
private User host;
private long date;
private String location;
private TVSet tvSet;
private List<User> attending;
private int eventStatus;
Run Code Online (Sandbox Code Playgroud)
TVEvent,TVSet和User每个都有一个位图和大多数原始数据.那么这里的问题是什么?非常感谢任何帮助.
编辑
这是stackoverflow错误:
D/Error: ERR: stack=java.lang.StackOverflowError: stack size 8MB
at java.lang.reflect.Method.invoke(Native Method)
at com.google.android.gms.internal.zzaix$zza.zzaE(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaD(Unknown Source)
at com.google.android.gms.internal.zzaix$zza.zzaE(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaD(Unknown Source)
at com.google.android.gms.internal.zzaix$zza.zzaE(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaD(Unknown Source)
at com.google.android.gms.internal.zzaix$zza.zzaE(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaD(Unknown Source)
at com.google.android.gms.internal.zzaix$zza.zzaE(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaD(Unknown Source)
at com.google.android.gms.internal.zzaix$zza.zzaE(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaD(Unknown Source)
at com.google.android.gms.internal.zzaix$zza.zzaE(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaD(Unknown Source)
at com.google.android.gms.internal.zzaix$zza.zzaE(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaD(Unknown Source)
at com.google.android.gms.internal.zzaix$zza.zzaE(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaD(Unknown Source)
at com.google.android.gms.internal.zzaix$zza.zzaE(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaD(Unknown Source)
at com.google.android.gms.internal.zzaix$zza.zzaE(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaD(Unknown Source)
at com.google.android.gms.internal.zzaix$zza.zzaE(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaD(Unknown Source)
at com.google.android.gms.internal.zzaix$zza.zzaE(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaD(Unknown Source)
at com.google.android.gms.internal.zzaix$zza.zzaE(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaD(Unknown Source)
at com.google.android.gms.internal.zzaix$zza.zzaE(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaD(Unknown Source)
at com.google.android.gms.internal.zzaix$zza.zzaE(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaD(Unknown Source)
at com.google.android.gms.internal.zzaix$zza.zzaE(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaw(Unknown Source)
at com.google.android.gms.internal.zzaix.zzaD(Unknown Source)
at com.google.android.gms.internal.zzaix$zza.zzaE(Unknown Source)
at com.google.android.gms.internal.zz
06-30 18:38:21.447 15005-15012/tvfriends.kolio.com.tvproba W/art: Suspending all threads took: 64.352ms
06-30 18:38:21.478 15005-15005/tvfriends.kolio.com.tvproba D/Error: ERR: TOTAL BYTES WRITTEN: 13034964
Run Code Online (Sandbox Code Playgroud)
您尝试存储的数据大小setValue()可能太大,很可能是由位图数据引起的.
可以使用Parcel在Android组件之间传递数据,但数据量限制为1MB.该TransactionTooLargeException发生,因为一些组件,你的任何一个或火力地堡组件处理您的请求之一,尝试发送包含超过1MB的数据更多的包裹.您看到的垃圾收集重复运行的报告是您的处理请求大量内存的另一个迹象.
这个新问题是否意味着您不再寻求其他问题的帮助?如果是这样,取消赏金.
TVSet.compressImage()为您的其他问题发布的代码中的方法显示您是Base64编码全尺寸图像并存储结果.这是您希望存储在数据库中的数据的一部分.这不是FirebaseDatabase的最佳用途.考虑使用FirebaseStorage存储仅包含存储在数据库中的文件名或其他标识密钥的映像.
保存我在Firebase存储上保存的图像的Uri到Firebase数据库时出现此错误.
就像@Mwakima提到的那样,你无法将Uri保存到Firebase数据库.
解决方案:将模型类中uri的类型更改为String,从中获取String
String uri = taskSnapshot.getDownloadUrl().toString()
从Firebase获取字符串后,将其传递给Uri使用
Uri imageUri = Uri.Parse(<your-uri-as-a-string>);
| 归档时间: |
|
| 查看次数: |
3822 次 |
| 最近记录: |