我有一个应用程序,它使用一个包含3个表的数据库。这3个表通过活动和服务读取和写入数据。
得到一些“android.database.sqlite.SQLiteException:数据库被锁定”崩溃后,我进入了数据库适配器类,并使用synchronized语句包装每个写入,更新或删除函数,如下所示:
public int deleteExpiredAlarms() {
String whereClause = FIELD_EXPIRED + " = 1";
int val = 0;
synchronized(dbWriteLock) {
val = db.delete(ALARM_DATABASE_TABLE, whereClause, null);
}
return val;
}
这似乎让它变得更好。但是最近它又变得糟糕了,因为我添加了更多读写不同表的服务。
我已经考虑过使用内容提供商,因为它已被声称可以解决这样的问题,但是如果我应该能够拥有直接数据库,那么它真的比我想做的更多访问没有锁定问题。而且我不打算让其他应用程序访问此数据库。
感谢您的帮助。