我有一个大型 SQLiteDatabase,我在打开该数据库之前从 Assets 复制到 SDCard。但我似乎遗漏了一些东西,因为使用该数据库的 Activity 可以在复制完成之前查询数据库,这会导致 SQLiteException。
在我的构造函数中,我这样做:
private DataBaseHelper(Context context) {
super(context, DB_NAME, null, 1);
mContext = context;
DB_FILE_PATH = context.getExternalFilesDir(null);
try {
createDataBase();
openDataBase();
} catch (IOException e) {
e.printStackTrace();
}
}
createDatabase 方法正在做:
public void createDataBase() throws IOException {
dbExist = checkDataBase();
if (dbExist) {
} else {
this.getReadableDatabase();
try {
copyDataBase();
} catch (IOException e) {
throw new Error("Error copying database");
}
}
}
我想你明白了。但是,我的问题是如何在打开数据库之前检查数据库是否已完成复制?显然我现在做得不对。
问候,乔纳斯