我目前正在学习SQLiteDatabase及其相关类,旨在更好地了解它如何处理并发(我的当前解决方案有效,但我有一种印象,即实际上我可能正在做多余的工作,因为它是基于并发没有被处理给我的假设)。
关于SQLiteOpenHelper的android文档中提到了getWriteableDatabase方法:
成功打开后,数据库将被缓存,因此您可以每次需要写入数据库时调用此方法。(确保在不再需要数据库时调用close()。)
我有点不清楚正在缓存什么(所以我目前有一个包装器为我进行缓存)。那么,这里到底发生了什么?这两个SQLiteDatabase实例是围绕一个缓存/静态实例的包装器吗?
此外,实际的锁定如何处理?如果我有两个由同一个SQLiteOpenHelper实例创建的单独的SQLiteDatabase实例,那么它们是否具有事务安全性?也就是说,如果我在一个事务中以独占模式开始一个事务,然后在另一个线程上启动另一个事务,我希望第二个事务在第一个完成之前不会启动。它是这样工作的吗?