私の Android アプリには、定期的に更新する読み取り専用データベースがあります。アプリは常に最新バージョンのデータベースをアセットに保持しています。
SQLiteOpenHelper サブクラスのコンストラクターに渡すバージョン番号をインクリメントし、(この場合) バージョン 4 に上げます。
次のコードがあります。
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// copy from assets to local storage; version really doesn't matter;
// DB will be opened from the target location.
copyDataBase();
}
読み取り可能なデータベースを取得するために呼び出しを行うと、これが呼び出されます。
SQLiteDatabase db = myDBHelper.getReadableDatabase();
// Here db.getVersion() correctly returns "4", the newVersion.
// db is also usable and has the correct data.
しかし、getReadableDatabase onUpgrade を呼び出すたびに、oldVersion=3 から newVersion=4 に呼び出されます。
バージョンが固執しない理由はありますか?