データベースを開く前に、アセットからSDカードにコピーする大きなSQLiteDatabaseがあります。しかし、そのデータベースを使用するアクティビティは、コピーが完了する前にデータベースにクエリを実行できるため、何かが足りないようです。これにより、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");
}
}
}
ご理解いただけると思います。ただし、私の問題と質問は、データベースを開く前に、データベースのコピーが完了したかどうかを確認する方法です。明らかに、私は今それを正しくやっていない。
よろしく、ジョナス