android数据库助手类中的SqlLiteDatabaseLockedException

时间:2013-08-07 09:33:08

标签: android database performance sqlite

我有一个帮助程序类,它管理整个应用程序中的所有数据库查询。它是一个单例类和一个getInstance()方法。

public static MasterDatabase getInstance() {
    if (_masterDb == null) {
        _masterDb = new MasterDatabase();
    }
    return _masterDb;

}

虽然我已经注意只会创建这个类的一个实例,但是我得到了 SqlLiteDatabaseLockedException 以及数据库被锁定的消息。我想过实施双重检查锁定技术但看起来它可能会在多核环境中制动。那么,什么是确保在我的应用程序中不会重复此异常的最佳实现。

注意:其他交易方法(插入,删除,...)未同步。

问题2:使交易方法同步会好吗?

1 个答案:

答案 0 :(得分:1)

如果您使用的是android-s DatabaseHelper ,则数据库可能已由DatabaseHelper打开。

试试这个

private static DatabaseHelper _myDatabaseHelper = null;

public static MasterDatabase getInstance() {
    if (_myDatabaseHelper == null) {
        _myDatabaseHelper = new MyDatabaseHelper();
    }
    return _myDatabaseHelper..getWritableDatabase();
}