在工作中,可能你的用户并没有那么听话,随意的去点击你的按钮,如果你的按钮时间这个时候是在访问同一个sqlite 数据库,那么这个时候你可能会考虑多线程了,这里把我自己遇到的多线程访问数据库中遇到的问题总结于此:
对于单个sqlite文件打开数据库的时候要添加 synchronized 否则会提示:wait for second beause XXXis locked
这里需要一个打开数据库的方法:
<span style="font-size:14px;">public synchronized static SQLiteDatabase geSDCardSQLiteDatabase(){</span>
<span style="font-size:14px;">
<span style="white-space:pre"> </span> if (db==null) { //采用单例模式
Boolean tagBoolean =FileUtils.isExists(pathString);
db = SQLiteDatabase.openOrCreateDatabase(pathString , null);
if (!tagBoolean) {//如果不存在那么需要创建表
db.execSQL(CreateTable.createTable());
}
}
return db;
} </span>
这里讲一下为什么要用单例模式: