Android sqlite并发无异常

Kev*_*gan 11 sqlite android

Android上的SQLite的,您可以从多个特效访问数据库的读取,但如果你现在从一个进程写,读取和其他特效写入将抛出一个异常,因为第一次写对数据库的锁.

通过"procs"我指的是同一个应用程序中的其他线程.

有有其他线程只是等待,直到数据库再次可用,可能带有指定超时,而不是抛出异常的标准呢?

期待"为什么你这样做?" 答案,它就是我们这样做的方式,就是这样.我们也不打算使用内容提供商.只想要一种同步数据库访问的方法.

假设有这样做没有标准的方式,我们可能会风写的包装围绕分贝呼吁做一些线程同步.

Chr*_*Orr 17

只要您使用相同的SQLiteDatabase对象,就会为您完成同步.

因此,如果您通过单例访问对象,则应该没有问题.虽然如果要实现超时,可能需要添加一些其他逻辑,例如wait/notify或类似的东西.

  • 我没有足够的"影响力"赞成这个答案,但它确实引导我走上正确答案的道路.SQLiteOpenHelper实际上返回相同的缓存对象,无论您调用"getReadable ..."还是"getWritable ...",数据库对象本身都有一个java Lock对象,以确保序列化任何调用,读取或写入.我将不得不保留一个单独的SQLiteOpenHelper,这将让我定期"关闭"db对象,这似乎"更安全".Sqlite本身可以处理多个读取客户端,这在逻辑上似乎表现得更好,但无论如何.再次感谢. (4认同)