标签: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 结束时再关闭。
标签:android开发
原文地址:http://blog.csdn.net/cml_blog/article/details/39554401