私は多かれ少なかれまったく同じ問題に悩まされており、理にかなっている問題に未解決の欠陥を見つけました...
https://code.google.com/p/android/issues/detail?id=174566
私の回避策は、最善の解決策ではありませんが、データベースのリビジョンをステップ実行して自分で追跡しないことです。したがって、onUpgrade()
を呼び出さないでください。 、アプリを更新するときに手動でアップグレードします。
または、読み取り専用の小さなDBがある場合は、すべてのonCreate()
でアセット内のdbのコピーをトリガーできます。 DBHelper
で クラスですが、ファイルシステムがいっぱいの場合、これは望ましくない問題を引き起こす可能性があるため、より良い解決策を探しているときにのみこれを行ってください。
@Override
public void onCreate(SQLiteDatabase db) {
// Workaround for Issue 174566
myContext.deleteDatabase(DB_NAME);
try {
copyDataBase();
}
catch(IOException e) {
System.out.println("IOException " + e.getLocalizedMessage());
}
}
私のアプリは、回避策を使用して適切にアップグレードするようになりました。この欠陥が最初に発生してからどれくらいの時間が経過したかを判断することで、まったく修正されない可能性があります...
申し訳ありませんが、これは問題の完全な解決策ではありませんが、少なくとも前進する方法です。