我有一个允许用户查询sqlite数据库的应用程序。当应用程序启动时,它会下载一个URL,以查看后台线程上是否有任何数据库更新。
不幸的是,如果用户选择在更新运行时尝试查询数据库的函数,则会导致锁定。
我的问题是双重的。
在这种情况下避免冲突的最佳策略是什么。
是否可以暂停后台线程,直到应用程序终止之前,并在应用程序终止之前运行更新。
如果有人有任何建议我会很感激,因为我需要在没有用户停止使用该应用程序的情况下运行更新。
答案 0 :(得分:0)
要回答您的问题,我相信#1点3是您在Iphone上遇到特定问题的最佳解决方案。看到你无法启动另一个线程来进行后台处理,等待很少(大多数程序在开始时都有)是标准操作。
我不会尝试实现一种在应用程序终止时推送更新的方法。太多次让人们停止(包括我自己)运行应用程序时,他们只想继续其他事情。
IMO,等待计划开始(希望不会太长)是解决这个问题的最佳方法。
答案 1 :(得分:0)
请澄清 - 听起来像数据库查询应该是一个非常简短,快速的功能,尽管URL下载可能是一个更长的操作。您是否在整个URL下载操作期间持有数据库锁?如果是这样,我认为您希望将URL下载作为一个操作 - 一旦收到所有数据 - 快速将其应用到您的数据库,因此在URL下载期间不会保留数据库。