我有一个帮助程序类,它管理整个应用程序中的所有数据库查询。它是一个单例类和一个getInstance()方法。
public static MasterDatabase getInstance() {
if (_masterDb == null) {
_masterDb = new MasterDatabase();
}
return _masterDb;
}
虽然我已经注意只会创建这个类的一个实例,但是我得到了 SqlLiteDatabaseLockedException 以及数据库被锁定的消息。我想过实施双重检查锁定技术但看起来它可能会在多核环境中制动。那么,什么是确保在我的应用程序中不会重复此异常的最佳实现。
注意:其他交易方法(插入,删除,...)未同步。
问题2:使交易方法同步会好吗?
答案 0 :(得分:1)
如果您使用的是android-s DatabaseHelper ,则数据库可能已由DatabaseHelper打开。
试试这个
private static DatabaseHelper _myDatabaseHelper = null;
public static MasterDatabase getInstance() {
if (_myDatabaseHelper == null) {
_myDatabaseHelper = new MyDatabaseHelper();
}
return _myDatabaseHelper..getWritableDatabase();
}