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

android 多线程数据库读写

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

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

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

android 数据库是否该关闭


打印出来的信息是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 结束时再关闭。



相关文章:

  • 2021-07-15
  • 2022-12-23
  • 2021-09-10
  • 2022-12-23
  • 2022-12-23
  • 2021-11-13
  • 2021-11-03
猜你喜欢
  • 2022-12-23
  • 2021-11-23
  • 2021-09-20
  • 2022-12-23
  • 2021-11-12
相关资源
相似解决方案