防止多线程并发访问SQLite。

AtomicInteger num = new AtomicInteger();
应该写一个抽象公共类,将getWritableDatabase(),getReadableDatabase(),close()都封装在里面。
并写一个AtomicInteger num = new AtomicInteger(); 在进行getWritableDatabase(),getReadableDatabase(),close()方法
操作前,先锁住num对象。在统一close的时候判断num.decrementAndGet() == 0。
public SQLiteDatabase getWritableDatabase(){
synchronized(num){
num.incrementAndGet();
}
return dbHelper.getWritableDatabase();
}

public SQLiteDatabase getReadableDatabase(){
synchronized(num){
num.incrementAndGet();
}
return dbHelper.getReadableDatabase();
}

public void close(){
synchronized (num) {
if(num.decrementAndGet() == 0){
dbHelper.close();
}
}
}

你可能感兴趣的:(Android)