Firebase 数据库崩溃 SQLiteDatabaseLockedException

2024-07-04

我在少数设备上遇到此崩溃,但仅限于 Android 4。

我使用的是 Firebase Android SDK 10.2.1 11.0.2。推迟更新到最新版本,因为它也会强制更新 Google Play 服务,并且许多用户继续保留旧的 GPS 版本。

还有其他人看到这个问题吗?

Update:这是早些时候工作的。我从 Firebase SDK 9.4.0 升级到 10.2.1,并将编译版本 23 升级到 25 后开始崩溃。崩溃仅发生在 Android 4.4 (Kitkat 19) 上

Updated例外:

Fatal Exception: java.lang.RuntimeException
       at com.google.android.gms.internal.mz.run(Unknown Source)
       at android.os.Handler.handleCallback(Handler.java:808)
       at android.os.Handler.dispatchMessage(Handler.java:103)
       at android.os.Looper.loop(Looper.java:193)
       at android.app.ActivityThread.main(ActivityThread.java:5292)
       at java.lang.reflect.Method.invokeNative(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:515)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640)
       at dalvik.system.NativeStart.main(NativeStart.java)
Caused by o.kD: Failed to gain exclusive lock to Firebase Database's offline persistence. This generally means you are using Firebase Database 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 FirebaseDatabase in your Application class. If you are intentionally using Firebase Database from multiple processes, you can only enable offline persistence (i.e. call setPersistenceEnabled(true)) in one of them.
       at com.google.android.gms.internal.nb.zzN(Unknown Source)
       at com.google.android.gms.internal.nb.(Unknown Source)
       at com.google.android.gms.internal.mx.zza(Unknown Source)
       at com.google.android.gms.internal.qd.zzgQ(Unknown Source)
       at com.google.android.gms.internal.qu.zzHg(Unknown Source)
       at com.google.android.gms.internal.qu.zza(Unknown Source)
       at com.google.android.gms.internal.qv.run(Unknown Source)
       at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
       at java.util.concurrent.FutureTask.run(FutureTask.java:237)
       at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152)
       at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:841)
Caused by android.database.sqlite.SQLiteDatabaseLockedException: database is locked (code 5): , while compiling: PRAGMA journal_mode
       at android.database.sqlite.SQLiteConnection.nativePrepareStatement(SQLiteConnection.java)
       at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:893)
       at android.database.sqlite.SQLiteConnection.executeForString(SQLiteConnection.java:638)
       at android.database.sqlite.SQLiteConnection.setJournalMode(SQLiteConnection.java:320)
       at android.database.sqlite.SQLiteConnection.setWalModeFromConfiguration(SQLiteConnection.java:294)
       at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:215)
       at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193)
       at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)
       at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)
       at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)
       at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:829)
       at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:814)
       at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:709)
       at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:1039)
       at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:256)
       at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:224)
       at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)
       at com.google.android.gms.internal.nb.zzN(Unknown Source)
       at com.google.android.gms.internal.nb.(Unknown Source)
       at com.google.android.gms.internal.mx.zza(Unknown Source)
       at com.google.android.gms.internal.qd.zzgQ(Unknown Source)
       at com.google.android.gms.internal.qu.zzHg(Unknown Source)
       at com.google.android.gms.internal.qu.zza(Unknown Source)
       at com.google.android.gms.internal.qv.run(Unknown Source)
       at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
       at java.util.concurrent.FutureTask.run(FutureTask.java:237)
       at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152)
       at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:841)

我的应用程序中确实有多个进程,但使用以下代码中止子进程的 Application.onCreate 。

@Override
public void onCreate() {
    super.onCreate();

    if (FirebaseApp.getApps(this).isEmpty()) {
        // No firebase apps; we are in a non-main process
        return;
    }

    // Firebase init and other custom logic
    FirebaseDatabase.getInstance().setPersistenceEnabled(true);
}

Firebase 中没有 SQLiteDatabaseLockedException。这SQLite数据库锁定异常 https://developer.android.com/reference/android/database/sqlite/SQLiteDatabaseLockedException.html当你使用时抛出SQLiteAndroid 的数据库和数据库引擎无法获取完成其工作所需的数据库锁。

如果该语句是 [COMMIT] 或发生在显式事务之外,则您可以重试该语句。如果该语句不是 [COMMIT] 并且发生在显式事务中,那么您应该在继续之前回滚该事务。

Edit:通过对详细堆栈跟踪的新编辑,我明白了错误是什么。当你设置的时候出现这个错误setPersistenceEnabled(true)。必须在对您的设备执行任何其他操作之前完成此操作firebaseDatabase目的。因此,我建议您使用以下代码:

public class HelperClass {
    private static FirebaseDatabase firebaseDatabase;
    public static FirebaseDatabase getDatabase() {
        if (firebaseDatabase == null) {
            firebaseDatabase = FirebaseDatabase.getInstance();
            firebaseDatabase.setPersistenceEnabled(true);
        }
        return firebaseDatabase;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Firebase 数据库崩溃 SQLiteDatabaseLockedException 的相关文章

  • 将按钮与 ScrollView 中的底部对齐

    我正在尝试将按钮与 ScrollView 底部对齐并使 ScrollView 填充页面 第一张截图是它的样子 第二张截图是我想要的 在屏幕截图中 未使用 ScrollView 因为没有足够的项目 但 ScrollView 内的项目数量不固定
  • 如何处理单个 Activity 的多个 Fragment

    我最近开始考虑为我的 Android 设备开发应用程序 我产生这种兴趣的原因是我在玩几个arduinos时想到了一个好主意 让它们与我的手机进行通信 就像我在arduino本身上测量的任何值的接口一样 现在 我可以采取简单的方法并使用公共资
  • 使用带有离子和电容器的 https 加载 webview

    我正在尝试构建一个必须加载的 apkhttps mydomain https mydomain与离子4和电容器 在 Capacitor config json 中 我精确了这个字段 server hostname mydomain 因为我在
  • 如何确定Android设备的安全补丁级别?

    如何使用 API 或其他机制确定 Android 设备的安全补丁级别 我正在寻找相同的安全补丁信息 可以通过单击手动找到Settings gt About设备上的菜单 例如 谷歌每月都会发布安全补丁2016 12 01 https sour
  • 如何使用 Android Volley 显示/请求 JSON 对象?

    我在 Android Studio 中遇到如何请求 JSON 对象的问题 我的 Logcat 只能打印 String onResponse 而不能打印 JSONObject 值 我在 AccessActivity java 内的 try 行
  • 仅第一行断点有效

    I am developing in Android Studio i ve used IntelliJ IDEA SDK I ve encountered debugging problem All my breakpoints don
  • HTC Desire 上的 EGLConfig,可用配置挂起设备

    我正在实施我自己的EGLConfigChooser传递给setEGLConfigChooser 为了根据我对应用程序的需求为当前设备选择最佳的可用配置 更具体地说 我正在查询所有可用的配置并选择具有最大深度缓冲区大小的配置 在具有相同深度缓
  • Android 变量 OnClick 监听器

    有没有一种方法可以为许多按钮提供 1 个 onClick Lister 我可以在其中抛出一个 case 语句来根据单击的按钮执行操作 我知道我可以为 100 个按钮创建 100 个不同的侦听器 但我必须认为我可以创建一些漂亮的变量来用更少的
  • Android Studio 0.2.7 使用 Gradle 构建异常

    我正在从 Eclipse 迁移到 Android Studio 尽管由于 Android Studio 仍处于 预览 模式 但我正在缓慢且增量地迁移 自从更新到最新版本的 Android Studio 0 2 7 以来 我在默认构建过程中遇
  • 重命名由 android 10 中的应用程序创建的 Mediastore 文件。在 Android API 30 上工作,但在 API 29 中显示错误

    在这里 这个 renameFile 函数在 Android API 30 中工作 但是 它在 Android API 29 中不起作用 并显示如下错误 java lang IllegalArgumentException 不允许移动不属于明
  • getInstance() 不适用于实时数据库中除 us-central1 之外的其他位置

    我正在尝试将用户凭据保存到 Firebase 实时数据库 但是 当我执行该程序时 数据库没有更新 我已正确配置 Firebase 设置 因为身份验证和存储 均为 Firebase 正在运行 build gradle dependencies
  • Eclipse 创建 Java 虚拟机失败

    我正在使用 eclipse 开发 android 应用程序 它总是进展顺利 但今天它出现了问题 当我尝试打开 Eclipse 时 它 向我显示此消息 Failed to create the java virtual machine Err
  • 应用已被 Google Play 删除,因为旧版本不符合新的后台位置政策

    我调整了位置数据的权限和使用 并将其发布在新版本 v10004 中 不幸的是 我的应用程序仍然被删除 因为以前的版本不符合新的后台位置规定 如我从 Google 收到的邮件中所述 受影响的 APK App Bundle v10003 我找不
  • 如何使用生产存储桶数据启动 Firebase 存储模拟器?

    我正在使用 Firebase 模拟器来运行所有 Firebase 服务 我已成功通过运行以下命令来运行模拟器并备份 Firestore 数据 firebase emulators start import my directory 但我找不
  • 从 android 发送数组并使用 Volley 在 PhP 服务器接收

    你好我想发送一个字符串值数组到 PhP 服务器和 PhP 解码并将它们存储在 PhP 变量中 这是我在 android studio 的代码 private void getEventDetailRespond RequestQueue r
  • 如何在AsyncTask中举杯,提示我使用Looper

    我有 AsyncTask 在后台完成的任务 在某些时候 我需要发出一个 Toast 来表示某件事已完成 我尝试过但失败了因为Caused by java lang RuntimeException Can t create handler
  • 使用lib添加自定义字体android

    我正在使用 android 自定义字体 lib Calligraphyhttps github com chrisjenx Calligraphy https github com chrisjenx Calligraphy 但对textv
  • 给出文档名称的 UID

    我想知道在我的 firestore 数据库中保存用户首选项的最佳实践是什么 我会尝试用一个例子来解释 Case 1 我的 用户 集合中有这种文档 名称是由 Firebase 随机生成的 有 3 个字段 user uid 细绳 nicknam
  • 将图像添加到Toast?

    是否可以以编程方式将图像添加到 toast 弹出窗口 Yes 您可以使用 setView 方法将 imageview 或任何视图添加到 toast 通知中 使用此方法您可以根据您的要求自定义 Toast 在这里 我创建了一个要膨胀到 Toa
  • 在模拟器中实施应用内结算

    我一直在阅读有关 Android 应用程序的 实施应用内计费 的内容 并且文档说不可能在模拟器中测试该应用程序 真的吗 我正在开发的手机没有 移动数据计划 因此我尝试通过 USB 通过 PC 连接手机 但由于我的 PC 位于代理后面 因此我

随机推荐

  • 在已部署的 ASP.NET 网站项目上,我可以更新 .resx 文件而不重新编译吗?

    我正在将 ASP NET 应用程序部署到锁定的生产环境 将程序集 包括卫星资源程序集 推送到此环境具有与其关联的进程 但将非程序集复制到环境则没有 在 ASP NET 网站项目中 我可以更新 resx 文件而不重新编译吗 我想这取决于您的应
  • MySQL 查询所有列的 max()

    使用单个查询检索表中所有列的最大值的正确方法是什么 谢谢 澄清 相同的查询应该适用于任何表 即列名不应被硬编码到其中 SELECT max col1 as max col1 max col2 as max col2 FROM table
  • 如何使我的 .htaccess 文件允许 Safari 和其他浏览器打开 GZIP?

    我正在使用 htaccess 文件来允许我的页面调用 gzip 压缩的 JavaScript 文件 它在 ie8 和 ff3 中工作正常 但脚本未在 Safari 或 Chrome 中加载 这是我正在使用的 htaccess 文件
  • JavaFx - tableView 中的 String 和 FlowPane (行?)?

    我目前正在尝试实现以下内容 一个以 ObservableList 作为数据集的 TableView 有两列 每列包含字符串 玩家的姓名 这部分很简单 单击播放器 名称 后 应在所选播放器下方注入自定义 FlowPane 如果单击另一个玩家
  • 如何改变Java中数组的长度? [复制]

    这个问题在这里已经有答案了 所以我被分配了一个项目 其中有一个数组 当用户将元素放入该数组时一旦装满 它的长度必须加倍 We are 不允许使用ArrayList或任何内容集合接口 我想做的是创建一个新数组 一旦旧数组已满 然后将值复制到新
  • python3 file.readline EOF?

    我无法确定何时到达 python 中的文件末尾file readline fi open myfile txt r line fi readline if line EOF or something similar dosomething
  • 以多态类型作为函数参数的 std::function 的容器

    我想要 另一个 回调注册的东西 扩展公共基本事件类型的不同事件类型将触发关联的回调函数 这是最初的草案或想法 include
  • 动态改变股票行情间隔

    我想动态更改我的股票间隔 我写了一个例子来向您展示我是如何做的 我的用例不是 加速度计 但我希望它能给您一个想法 http play golang org p 6ANFnoE6pA http play golang org p 6ANFno
  • Wix 安装程序开始菜单快捷方式未出现

    我正在尝试使用 WiX v3 7 因为 VS2012 不再包括安装和部署项目 为 Windows 应用程序创建一个安装程序项目 以用于学习目的 Wix 工具集已集成到 VS 我正在创建一个新的 WiX 单一安装程序安装项目 安装程序始终编译
  • 如何在ionic 2中生成和显示QR码

    我找到了在 Angular 和 ionic 1 中生成条形码的文档 但我需要在 Ionic 2 项目中生成一个 尝试 JsBarcode 项目 有一个 Angular 1 的包装器 我使用了本期中的说明来让它在 Angular 2 上工作
  • 表的存储引擎不支持修复。 InnoDB 还是 MyISAM?

    修复数据库后 我收到以下错误 scode tracker ap visits note The storage engine for the table doesn t support repair scode tracker visit
  • 如何根据颜色和尺寸属性通过关联产品图像更改可配置的产品主图像?

    我正在使用具有尺寸和颜色属性的可配置产品 我想根据所选选项更改可配置产品视图上的主图像 例如 如果我选择红色 则具有红色属性值的关联产品的图像应在我选择该选项后立即显示在主图像上 我怎样才能做到这一点 谢谢 我已经为我正在努力解决的这个问题
  • 在 Emacs VM 中设置 Gmail

    使用 mutt 作为电子邮件客户端一段时间后 我想尝试 GNU Emacs 的 VM 包 如果重要的话 Ubuntu 11 04 64 位 来阅读我的邮件 如果有可用的配置文件 emacs 和新的 vm 文件中必要的修改 我会在网络上进行
  • 复选框值未插入 mysql 中

    我正在尝试将复选框值插入我的 mysql 数据库 程序中没有错误 但我无法将值存入数据库 在数据库中它显示为空 public class MainActivity extends AppCompatActivity CheckBox box
  • 如何在完成另一个线程后运行一个线程

    我想运行两个线程r1 and r2 首先启动r1并完成后r1 start r2 仅在完成后r1 这怎么能做到呢 两个线程 一个接着一个 我的答案here https stackoverflow com questions 4592716 m
  • 返回动态类型的枚举方法

    我有一个枚举 我想创建一个方法来为每种情况返回不同的类型 例如 我有一本字典 String Any 为了处理这些值 我使用枚举来创建一个键数组 enum Foo case option1 case option2 func createKe
  • 上传时防止空闲状态(iOS 上的 Web 应用程序)

    我正在构建一个将在移动和桌面上使用的网络应用程序 在 iOS 上进行测试后 我注意到我的手机将进入空闲状态 屏幕关闭 返回时显示锁定屏幕 即使有是一个正在上传的文件 ajax上传 有什么办法可以防止这种情况发生吗 我正在通过将应用程序作为
  • 使用 FileChannel 与 NIO.2 同步目录

    我刚刚发现 有了NIO 2 至少在Linux下 我可以打开一个FileChannel在目录上 并调用力 真 http download oracle com javase 7 docs api java nio channels FileC
  • gc() 和 rm() 有什么区别

    我定期使用调用来清理 R 中的内存rm list ls 我需要调用垃圾收集器吗gc 在那之后 这2个函数有什么区别 做gc call rm 对于某些变量 首先 需要注意的是 两者有很大不同gc不删除any您仍在使用的变量 它只会为您不再有权
  • Firebase 数据库崩溃 SQLiteDatabaseLockedException

    我在少数设备上遇到此崩溃 但仅限于 Android 4 我使用的是 Firebase Android SDK 10 2 1 11 0 2 推迟更新到最新版本 因为它也会强制更新 Google Play 服务 并且许多用户继续保留旧的 GPS