SQLiteDatabase使用模式

时间:2017-01-27 16:52:51

标签: android android-sqlite

我在访问我的SQLite数据库时可能使用以下模式(可能来自不同的线程):

try(SQLiteDatabase db = new MySqliteOpenHelper(context).getWritableDatabase()) {
    ...
}

到目前为止,我认为它干净且线程安全,但由于“数据库被锁定”而导致一些崩溃。

为什么这种模式错了,我应该如何更改呢?

1 个答案:

答案 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;
}

这是线程安全的,因为你将始终使用一个对象。