For more information on Android multi-threaded data read, read blog:
Android multi-threaded database read and write
Often struggle to get sqlitedatabase each time the operation to close the problem, each close and afraid of affecting performance, here the Sqliteopenhelper operation Logic is recorded:
Sqliteopenhelper gets Getwritabledatabase,getreadabledatabase If the previously acquired Sqlitedatabase object is not close off, The Sqlitedatabase object that was previously generated will be used directly, and if it has already been close, a new object will be generated!
Each operation shuts down the database results, there is a picture of the truth:
The printed information is the hashcode of the DB, and if two is the same, the description is the same object, the operation code:
@Overridepublic sqlitedatabase getwritabledatabase () {sqlitedatabase db= super.getwritabledatabase (); LOG.E ("ddddbbbb", "Getwritabledatabase Status:" +db.hashcode () + ", Path:" +db.getpath ()); return db;} @Overridepublic sqlitedatabase getreadabledatabase () {//TODO auto-generated method Stubsqlitedatabase db= Super.getreadabledatabase (); LOG.E ("ddddbbbb", "Getreadabledatabase Status:" +db.hashcode () + ", Path:" +db.getpath ()); return db;}
Personally feel that it is not necessary to play each operation to turn off the db, a bit of performance, rather than a global db, and so on when the application closed.
Whether the Android database should be closed