1.android SQLite多线程并发访问
背景
多线程情况下,进行SQLite操作时容易抛出打开正在关闭的数据库的异常,并且重复开关耗费性能
解决:
在打开和关闭数据时通过计数的方式防止重复打开和重复关闭,保证多个线程同时访问时只打开和关闭数据库一次。
private synchronized SQLiteDatabase getWritableDatabase() {
if (dbCounter.incrementAndGet() == 1) {
// Opening new database
database = helper.getWritableDatabase();
}
return database;
}
private synchronized void closeDb() {
if (dbCounter.decrementAndGet() == 0 && database != null) {
// Closing database
database.close();
}
}
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!