我正在编写一个具有“在线模式”的应用程序,即根据需要下载、解析数据并将其插入到 SQLite 数据库中。所有这些都是由服务执行的。该应用程序由多个请求服务更新数据的活动组成(不同的数据取决于活动)。
当用户浏览活动时(无需等待服务完成),很容易获得 SQLiteExceptions(消息:数据库被锁定).
我想过使用同步的块,但这会迫使用户在服务完成更新时等待加载新活动(需要数据库访问才能加载)。所以这似乎是一个死胡同。
另一种选择可能是停止更新当在每个 Activity 的 onStop 方法中时。当然,更新会中断,但这并不是什么大问题。问题是我不知道如何处理它。
我的问题是,我可以/应该如何处理这个问题?
如果您的活动只是像我的情况一样读取而不写入数据库,这就是我所做的解决方法:
- 创建一项服务(即 DatabaseService 0 并将其用作访问数据库的中心点(即打开数据库连接),以确保一次只有一个 dbhelper。
- 所有需要访问数据库的活动和服务都必须与DatabaseService建立连接
- 确保只有 DownloadService 的线程能够写入数据库并且应该使用事务
- 之后,您可以使用getReadable数据库读取/使用连接停止下载服务等。
只需确保您只使用 1 个 dbhelper。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)