在各种情况下,我都会收到类似这样的日志错误
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有想法吗? Other people have issues with that as well,但到目前为止,我发现的所有内容都非常古老,唯一可能的东西似乎是“ ContentProvider”,但没有有关如何将GreenDao 3与内容提供程序实际结合使用的文档。