我正在尝试实现 android SQLite 使用设计模式,以确保每个应用程序打开一个 SQLiteDatabase 实例。
public class BaseDataSource {
private static final CustomSQLiteHelper dbHelper = CustomSQLiteHelper.getInstance();
protected static SQLiteDatabase database;
static {
//HERE RISES EXCEPTION
BaseDataSource.database = BaseDataSource.dbHelper.getWritableDatabase();
}
private void close() {
if(null != BaseDataSource.database && BaseDataSource.database.isOpen()) {
BaseDataSource.database.close();
if(null != BaseDataSource.dbHelper) {
BaseDataSource.dbHelper.close();
}
}
}
protected BaseDataSource() {}
protected void finalize () throws Throwable {
close();
super.finalize();
}
}
但是当我的应用程序启动时,我得到了这种异常:
Caused by: java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteDatabase: /data/data/com.xxx/databases/xxx.db
在创建类之前如何打开和关闭 SQLiteDatabse 数据库?
更新
我发现了自己的错误。它在 CustomSQLiteHelper 类中。在onCreate
我关闭数据库的方法中。我尝试了在互联网上找到的所有解决方案,因此我犯了一个错误。