我正在开发一个使用Firebase数据库的应用程序。我需要从数据库中检索一些信息,但addValueEventListener
根本不会触发,几分钟后我的应用程序崩溃并出现以下错误
E/AndroidRuntime: FATAL EXCEPTION: main
Process: shareanddrive.net.net23.myapp, PID: 3317
java.lang.RuntimeException: Uncaught exception in Firebase runloop (3.0.0). Please report to support@firebase.com
at com.google.android.gms.internal.zzagf$1$1.run(Unknown Source)
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:6077)
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)
Caused by: java.lang.OutOfMemoryError: OutOfMemoryError thrown while trying to throw OutOfMemoryError; no stack trace available
然而adValuEventListener
在之前的活动中起作用,但随着我的第二次活动,它停止工作。我检查了它的参考是否正确。我在第二个活动中检索的代码是:
adsviewReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
textView.append("on add value datachange");
}
@Override
public void onCancelled(DatabaseError databaseError) {
textView.setText("Failed ");
}
});
来自onDataChanged
或onCancelled
的功能都不会触发。
请帮助。
答案 0 :(得分:1)
这是由于使用了不兼容的Firebase Auth版本和Firebase Realtime Database SDK引起的。请更新您对Firebase Auth和Firebase数据库的依赖关系到最新版本。选中https://github.com/firebase/firebase-android-sdk/issues/1086
答案 1 :(得分:0)
您获得的例外是OutOfMemoryError
。这意味着您尝试从数据库下载的数据超过设备有内存要处理的数据。
解决此问题的唯一方法是减少应用同步的数据量。你可以做的事情:
onStop()
或onPause()
上的上一个活动remove the listener,以便可以从内存中移除上一个活动的数据。