在我的应用程序中,存在多个进程,并且在每个进程中,我需要访问相同的SQLite数据库(当然,这意味着超过2个theads),所以我不仅担心线程安全性SQLite,也是流程安全。
此案例的一个解决方案是using content-provider。但是来自android sdk,it warns that its methods may be called from multiple threads and therefore must be thread-safe。如果内容提供者本身不一定意味着线程安全,我怎么能认为它是过程安全的?
article还明确说明默认情况下SQLiteDatabase本身是同步的,从而保证没有两个线程会同时触及它。如果在多进程情况下怎么办?两个进程可以同时修改同一个表吗?它会崩溃吗?谷歌搜索后我没有得到任何答案....
答案 0 :(得分:2)
多个进程的行为就像多个线程一样,即它们的事务不会受到彼此的干扰。
答案 1 :(得分:1)
你可以在这里找到答案:https://www.sqlite.org/faq.html(第5点)。简言之:
多个进程可以同时打开同一个数据库。多 进程可以同时执行SELECT。但只有一个过程可以 但是,在任何时候都要对数据库进行更改。
答案 2 :(得分:0)
如果您使用的是Android Room
,请参见https://issuetracker.google.com/issues/62334005