0

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

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

}

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

注意:其他事务方法(插入、删除、..)不同步。

问题2:使事务方法同步有用吗?

4

1 回答 1

1

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

尝试这个

private static DatabaseHelper _myDatabaseHelper = null;

public static MasterDatabase getInstance() {
    if (_myDatabaseHelper == null) {
        _myDatabaseHelper = new MyDatabaseHelper();
    }
    return _myDatabaseHelper..getWritableDatabase();
}
于 2013-08-07T10:28:57.330 回答