我在访问我的SQLite数据库时可能使用以下模式(可能来自不同的线程):
try(SQLiteDatabase db = new MySqliteOpenHelper(context).getWritableDatabase()) {
...
}
到目前为止,我认为它干净且线程安全,但由于“数据库被锁定”而导致一些崩溃。
为什么这种模式错了,我应该如何更改呢?
答案 0 :(得分:1)
MySqliteOpenHelper
不是单身人士。要在该类中创建单例,请在MySqliteOpenHelper
中执行以下操作。
1添加instance
MySqliteOpenHelper
变量
2添加名为getInstance(Context)
的方法(正文如下所示)
public synchronized static getInstance(Context context){
if(instance == null){
instance = new MySqliteOpenHelper(context);
}
return instance;
}
这是线程安全的,因为你将始终使用一个对象。