此问题仅适用于 SDK 28 设备(模拟器)。
我使用 SQLiteOpenHelper 创建的 SQLite 数据库在应用程序中完美运行,但是当我将其导出到磁盘(通过 Android studio 或通过代码)时,其大部分数据都会丢失。在应用程序中对此数据库所做的更改会立即反映在应用程序中,但不会反映在导出的数据库文件中。我尝试导出的数据库文件位于此处:
DDMS -> 文件资源管理器 -> 数据 -> 数据 -> 我的包名称 -> 数据库 -> 我的数据库文件。
在 SDK
我独立解决了这个问题。
我发现数据库文件夹除了数据库本身之外还包含两个补充文件。该文件夹的内容如下所示:
- 我的数据库.db
- MyDatabase.db-shm
- MyDatabase.db-wal
如果没有这些文件,数据库就是不完整的。
SDK 28之前,只有一个补充文件,不会影响数据库的完整性:
解决方案是在 SQLiteOpenHelper 中的数据库的单例实例上执行 .setWriteAheadLoggingEnabled(false) :
synchronized static MyDatabase getInstance(Context context) {
if (instance == null) {
instance = new MyDatabase(context.getApplicationContext());
instance.setWriteAheadLoggingEnabled(false);
}
return (instance);
}
默认情况下,这将恢复 SDK
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)