如何安全地从另一个进程可能正在使用的数据库中读取?

时间:2011-04-30 07:26:17

标签: android sqlite thread-safety copy

我想从您的应用使用WebView时创建的webview.db数据库中读取一些数据。但是,该数据库由主要是包级别的类管理,或者不通过apis提供很多访问权限。

由于我无法共享他们的数据库对象或锁,如何在没有“数据库被锁定”错误或类似异常的情况下安全地从该数据库中读取内容?

我只需要阅读,我不需要写。

如果没有办法安全地获取sql查询/游标,有没有办法以线程安全的方式安全地复制实际的webview.db文件?是否有获得腐败副本的危险?

非常感谢

1 个答案:

答案 0 :(得分:1)

我认为所有的锁都是在sqlite级别,而不是在java代码中,所以你应该能够在不混淆webview的情况下打开数据库并从中读取数据。 但是,出于同样的原因,您应该为锁定错误做好准备并重试查询,直到锁定消失为止。当webview执行数据更改语句时,数据库将被锁定 希望webview在整个运行期间不会对所有数据库进行独占锁定,但我没有看到原因。