Android 上的 Sqlite 允许您从多个进程访问数据库以进行读取,但如果您当前正在从一个进程写入,则从其他进程读取和写入将抛出异常,因为第一个写入锁定了数据库。
我所说的“procs”是指同一应用中的其他线程。
是否有一种标准方法可以让其他线程简单地等待直到数据库再次可用,可能有指定的超时,而不是抛出异常?
期待“你为什么那样做?”答案,这就是我们正在做的方式,仅此而已。我们也不打算使用内容提供者。只是想要一种同步数据库访问的方法。
假设没有标准的方法来做到这一点,我们可能最终会围绕数据库调用编写一个包装器来进行一些线程同步。
最佳答案
只要您使用相同的 SQLiteDatabase
对象,同步就会为您完成。
所以如果你通过单例访问对象,应该没有问题。如果你想实现超时,你可能想添加一些进一步的逻辑,例如等待/通知或类似的东西。
关于Android sqlite并发无异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3610147/