java.lang.IllegalStateException: attempt to re-open an already-closed object
2017-10-24 11:11
453 查看
java.lang.IllegalStateException: attempt to re-open an already-closed object
使用单例实现:如下import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import java.util.concurrent.atomic.AtomicInteger;
/**
*多线程下调用SQLite
*
* @author daniel
*
*/
public class DBManager {
//解决多线程并发
private AtomicInteger mOpenCounter = new AtomicInteger();
private static DBManager instance;
private static SQLiteOpenHelper mDatabaseHelper;
private SQLiteDatabase mDatabase;
private DBManager(){
}
/**
* 初始化
* @param helper
*/
public static synchronized void initializeInstance(SQLiteOpenHelper helper) {
if (instance == null) {
instance = new DBManager();
mDatabaseHelper = helper;
}
}
/**
* 获得当前实例对象
* @return
*/
public static synchronized DBManager getInstance() {
if (instance == null) {
throw new IllegalStateException(
DBManager.class.getSimpleName()
+ " is not initialized, call initializeInstance(..) method first.");
}
return instance;
}
/**
* 打开数据库对象
* @return
*/
public synchronized SQLiteDatabase openDatabase() {
if (mOpenCounter.incrementAndGet() == 1) {
// Opening new database
mDatabase = mDatabaseHelper.getWritableDatabase();
}
return mDatabase;
}
/**
* 多线程下关闭
*/
public synchronized void closeDatabase() {
if (mOpenCounter.decrementAndGet() == 0) {
// Closing database
mDatabase.close();
}
}
}
转载自http://blog.csdn.net/dingsai88/article/details/41676373
相关文章推荐
- 关于SQLite,java.lang.IllegalStateException: attempt to re-open an already-closed object
- java.lang.IllegalStateException: attempt to re-open an already-closed object
- 关于数据库,java.lang.IllegalStateException: attempt to re-open an already-closed object
- java.lang.IllegalStateException: attempt to re-open an already-closed object
- java.lang.IllegalStateException: attempt to re-open an already-closed object
- java.lang.IllegalStateException: attempt to re-open an already-closed object
- java.lang.IllegalStateException: attempt to re-open an already-closed object
- java.lang.IllegalStateException: attempt to re-open an already-closed object
- java.lang.IllegalStateException: attempt to re-open an already-closed object
- java.lang.IllegalStateException: attempt to re-open an already-closed object
- java.lang.IllegalStateException: attempt to re-open an already-closed object
- java.lang.IllegalStateException: attempt to re-open an already-closed object
- java.lang.IllegalStateException: attempt to re-open an already-closed object
- SQLiteHelper类||java.lang.IllegalStateException: attempt to re-open an already-closed object
- Android sqlite attempt to re-open an already-closed object: SQLiteDatabase:
- android SQLiteDatabase attempt to re-open an already-closed object:
- Android Exception 7(attempt to re-open an already-closed object )
- Android关于attempt to re-open an already-closed object: SQLiteDatabase: /data/data/
- 关于报错:IllegalStateException: attempt to re-open an already-closed 的解决方法
- 关于报错:IllegalStateException: attempt to re-open an already-closed 的解决方法