首页 > 解决方案 > 从单独的进程(例如同步)访问 GreenDao

问题描述

在各种情况下,我都会收到这样的日志错误

my.app:sync E/SQLiteLog: (5) statement aborts at 1: [PRAGMA journal_mode=TRUNCATE] database is locked

在调查这个问题时,我意识到我的应用程序(App.java)有时会被初始化多次。我的应用程序需要对数据库执行后台操作,为此会AndroidManifest.xml产生一个服务,该服务设置为android:process=":sync".

如果服务注定要在单独的进程中运行,它将接收自己的 App 实例(请参阅https://stackoverflow.com/a/28498115/2416394)现在有时应用程序是从主线程产生的,有时另外从同步进程访问同一文件导致上述锁定问题。

有人知道如何在这种情况下实际访问 GreenDao 吗?其他人也有这个问题,但到目前为止我发现的所有东西都非常旧,唯一可能的东西似乎是“ContentProvider”,但没有关于如何实际使用 GreenDao 3 和内容提供程序的文档。

标签: androidservicegreendao

解决方案


推荐阅读