android 数据库是否该关闭

关于android多线程数据读写请看博客:

android 多线程数据库读写

常常纠结于获取了SQLiteDatabase每次操作完是否要关闭的问题,每次关闭又怕影响性能,这里记录下SQLiteOpenHelper操作逻辑:

SQLiteOpenHelper获取getWritableDatabase,getReadableDatabase如果之前获取的SQLiteDatabase对象没有close掉,就会直接使用之前已经生成的SQLiteDatabase对象,如果之前已经close了,则会生成一个新的对象!

每次操作都关闭数据库结果,有图有真相:



打印出来的信息是db的hashcode,如果两个一样,说明是同一个对象,操作代码:

@Override
	public SQLiteDatabase getWritableDatabase() {
		SQLiteDatabase db= super.getWritableDatabase();
		Log.e("ddddBBBB","getWritableDatabase状态:"+db.hashCode()+",path:"+db.getPath());
		return db;
	}
	
	@Override
	public SQLiteDatabase getReadableDatabase() {
		// TODO Auto-generated method stub
		SQLiteDatabase db=  super.getReadableDatabase();
		Log.e("ddddBBBB","getReadableDatabase状态:"+db.hashCode()+",path:"+db.getPath());
		return db;
	}

个人觉得没必要每次操作玩都关闭db,有点消耗性能,不如弄个全局的DB,等application 结束时再关闭。



posted @ 2014-09-25 17:19  小小架构师  阅读(978)  评论(0编辑  收藏  举报