【发布时间】:2018-04-13 20:47:46
【问题描述】:
我已成功将我的应用程序从 RealtimeDB 迁移到 Firestore,但在迁移应用程序后经常崩溃并出现以下错误,如何解决此问题?我在使用 RealtimeDB 时从未遇到过这个错误
Fatal Exception: java.lang.RuntimeException: Internal error in Firestore (0.6.6-dev).
at com.google.android.gms.internal.zzejs.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:6184)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:788)`
Caused by java.lang.RuntimeException: Failed to gain exclusive lock to the Firestore client's offline persistence.
This generally means you are using Firestore from multiple processes in your app.
Keep in mind that multi-process Android apps execute the code in your Application class in all processes,
so you may need to avoid initializing Firestore in your Application class.
If you are intentionally using Firestore from multiple processes,
you can only enable offline persistence (i.e. call setPersistenceEnabled(true)) in one of them.
`at com.google.android.gms.internal.zzefi.start(Unknown Source)
at com.google.android.gms.internal.zzeca.zza(Unknown Source)
at com.google.android.gms.internal.zzecc.run(Unknown Source)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:428)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:272)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at com.google.android.gms.internal.zzejp$zza.run(Unknown Source)
at java.lang.Thread.run(Thread.java:761)`
【问题讨论】:
-
您是否多次打开与 Firestore 的连接?请指定您使用的 SDK 和版本。我猜这是一个 Android Java SDK,对吧?
-
我遇到了完全相同的错误。我已经用 RxJava2 的 Single 包装了 Firestore 插入代码,并且在订阅它时我指定了
subscribeOn(Schedulers.io)。这就是问题所在,因为 Schedulers.io 正在启动不同的线程
标签: firebase firebase-realtime-database google-cloud-firestore