我有一个允许用户查询 sqlite 数据库的应用程序。当应用程序启动时,它会下载一个 URL 以查看后台线程上是否有任何数据库更新。
不幸的是,如果用户选择在更新运行时尝试查询数据库的函数,这会导致发生锁定。
我的问题是双重的。
在这种情况下避免冲突的最佳策略是什么。
- 将数据库复制到另一个文件,更新它并复制回来
- 拥有某种单例操作并使用它来调度队列中的操作。
- 循环并等待锁打开(尽管我不想阻止用户)
是否可以将后台线程挂起,直到应用程序终止之前,并在应用程序终止之前运行更新。
如果有人有任何建议,我将不胜感激,因为我需要运行更新,而用户不需要停止使用该应用程序。
最佳答案
为了回答您的问题,我相信#1 第 3 点是针对您在 Iphone 上的特定问题的最佳解决方案。由于您无法启动另一个线程来进行后台处理,因此短暂的等待(大多数程序在开始时都会这样做)是一个标准操作。
我不会尝试实现一种在应用程序终止时推送更新的方法。很多时候,当人们(包括我自己)只想继续执行其他操作时,就会停止运行应用程序。
IMO,在程序开始时等待(希望不要太长)是解决此问题的最佳方案。
关于iphone - 使用数据库时在后台任务中更新 SQLite DB 的最佳策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4099947/