私はsqliteデータベースを処理するためにandroid SQLiteOpenHelperを使用しています。マルチスレッドの複数sqliteコマンドアンドロイドエラー
私は、単純なasynctaskを使用して、大量のデータベースコマンドをバックグラウンドで実行しようとしています。そのため、ユーザーはメインスレッドに与える遅延を気付かないでしょう。 複数の(大量の)コマンドがある場合、私は常にデータベースを開くことができませんオープンエラー。
android.database.sqlite.SQLiteCantOpenDatabaseException: unable to open database file (code 14) os_unix.c:31278: (24) open(/data/user/0/com.locomain.app/databases/app.db-journal)
私はコマンドを少々呼び出すと、これは起こりません。
私はすでにこの問題に関する他のスレッドをチェックしていますが、いくつかのGoogle検索も行っていますが、アンサーを見つけることができませんでした。
私のコード:
public void addTag(Tag tag){
final SQLiteDatabase db = getWritableDatabase();
final ContentValues values = new ContentValues(1);
db.beginTransaction();
values.put(TagColumn.TAG_NAME,tag.getName());
db.insert(TagColumn.TABLE_NAME,null,values);
db.setTransactionSuccessful();
db.endTransaction();
}
他に既に何かファイルが開いています。ヘルパークラスのインスタンスが2つありますか?この問題を防ぐためには、一般的にそのクラスをシングルトンにすることが最も良いと考えられます。 –
いいえ、そのシングルトン – locomain