есть похожие вопросы, но неясный ответ вокруг использования sqlite db из нескольких потоков.
Рассмотрим следующий сценарий:
class MainActivity extends Activity {
DbHelper db; //extends sqliteopenhelper
...
void M1() {
db.getReadableDatabase();
Cursor c = db.query("...."
...
db.close();
}
void M1() {
db.getReadableDatabase();
Cursor c = db.query("...."
...
db.close();
}
хорошо, это не многопоточность, но вопрос в том,
Становится ли проблемой использование одного и того же экземпляра экземпляра sqliteopenhelper (например, db), как описано выше, многократно открывающегося и закрывающегося разными способами?
И мой сценарий таков:
myAsync extends AsyncTask
doInBackground(.. {<br>
do something using M1(); //this is a background thread
}}
onResume()...{
myAsync.execute();
M2(); //this is the main thread
...
}
если вы видите, что в асинхронном сценарии, вероятно, два метода могут одновременно обращаться к одной и той же базе данных (только для чтения - как насчет записи?). Но они используют один и тот же экземпляр SqliteOpenHelper. Может ли это привести к столкновению, и если да, то как этого избежать?
Я хотел бы узнать больше о базе данных sqlite и параллелизме
Любые идеи будут с благодарностью.