【发布时间】:2011-08-06 05:42:21
【问题描述】:
关于从多个线程使用 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(.. {
do something using M1(); //this is a background thread }} onResume()...{ myAsync.execute(); M2(); //this is the main thread ... } 如果您在异步场景中看到这种情况,很可能是两种方法可以同时访问同一个数据库(只读 - 写入怎么样?)。但他们使用的是同一个 SqliteOpenHelper 实例。会不会造成碰撞?如果会,如何避免?
我想了解更多关于 sqlite 数据库和并发的信息
任何想法都将不胜感激。
【问题讨论】:
标签: android multithreading sqlite