Android 从多个线程访问sqlite以进行读取
使用来自多个线程的sqlite db也有类似的问题,但没有明确的答案。 考虑下面的场景:Android 从多个线程访问sqlite以进行读取,android,multithreading,sqlite,Android,Multithreading,Sqlite,使用来自多个线程的sqlite db也有类似的问题,但没有明确的答案。 考虑下面的场景: class MainActivity extends Activity { DbHelper db; //extends sqliteopenhelper ... void M1() { db.getReadableDatabase(); Cursor c = db.query("...." ... db.close(); } void M1() { db.getR
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数据库和并发性
任何想法都将不胜感激
ya有可能不会发生冲突,但当获得另一个线程时,您的db可能会关闭,您可以使用线程的同步概念ie优先级等,当我们使用Synchronized关键字时,一个线程完成它的任务,然后另一个线程将开始谢谢您提到同步,有些人说如果我只阅读,没有限制,也没有碰撞。这是真的吗?我还想学习同步,但没有什么有用的东西。你能向我推荐任何链接、博客、资料来源吗?我已经搜索过android开发者了。当然,如果我得到任何详细信息,我肯定会这样做