关于android Sqlite安全性的多进程案例

mia*_*shu 5 sqlite android

在我的应用程序中,存在多个进程,并且在每个进程中,我需要访问相同的SQLite数据库(当然,这意味着超过2个theads),所以我不仅担心SQLite的线程安全性,而且也是过程安全.

这种情况的一种解决方案是使用内容提供商.但是从android sdk,它警告它的方法可以从多个线程调用,因此必须是线程安全的.如果内容提供者本身不一定意味着线程安全,我怎么能认为它是过程安全的?

文章还澄清了SQLiteDatabase本身是默认的同步,从而保证没有两个线程都不会去碰它在同一时间.如果在多进程情况下怎么办?两个进程可以同时修改同一个表吗?它会崩溃吗?谷歌搜索后我没有得到任何答案....

CL.*_*CL. 2

多个进程的行为就像多个线程一样,即它们的事务是安全的,不会受到彼此的干扰。

  • 我刚刚在 2.3 设备上运行了一个简单的测试。如果没有内容提供程序,它会崩溃(数据库是锁定异常),否则它会正常工作。但在 6.0 设备上两者都可以工作。不知道为什么。有任何想法吗? (3认同)
  • @Wayne 较新的平台实现为在看到锁时等待。但它不会等待超过 2.5 秒。如果2.5秒后数据库仍然处于锁定状态,则会抛出“数据库已锁定”异常。 (2认同)