我的应用程序有 2 个部分。
每个进程都作为不同的进程运行。问题是它们都共享一个数据库。当服务尝试写入内容且 UI 正在读取数据时,我经常遇到数据库锁定错误。反之亦然。 这件事该怎么办呢?
synchronise
也无济于事,因为这又是因为两个不同的过程。 Content Providers
也许是一个选择,但由于我使用复杂的查询来挖掘信息,所以也很难使用它。 如何让两个进程共享数据库。 任何提示将不胜感激。
使用内容提供商是一种选择。另一个是看一下Berkeley DB。 BDB SQL API 与 SQLite 兼容,并且 BDB 锁管理器允许多个线程和/或进程同时读取/写入数据库。
每次操作后关闭连接
捕获数据库锁定错误并尝试在 50 毫秒后重新连接
或者让服务处理数据库,而活动向服务请求数据
可能有 isDatabaseInUseMethod 吗?
您应该使用内容提供商通过一个来源集中您的数据库查询。在内容提供程序内部,您可以使用任何您想要的锁定机制,以确保您没有并发访问。您还可以考虑使用内容观察器来协调服务操作和数据库更改。
以下是一篇关于如何在 Android 上使用 SQLite 进行锁定以及需要注意的事项的精彩文章:http://kagii.squarespace.com/journal/2010/9/10/android-sqlite-locking.html
我想你会在那里找到一些答案:)