iphone - 使用数据库时在后台任务中更新 SQLite DB 的最佳策略

标签 iphone sqlite background-process

我有一个允许用户查询 sqlite 数据库的应用程序。当应用程序启动时,它会下载一个 URL 以查看后台线程上是否有任何数据库更新。

不幸的是,如果用户选择在更新运行时尝试查询数据库的函数,这会导致发生锁定。

我的问题是双重的。

  1. 在这种情况下避免冲突的最佳策略是什么。

    • 将数据库复制到另一个文件,更新它并复制回来
    • 拥有某种单例操作并使用它来调度队列中的操作。
    • 循环并等待锁打开(尽管我不想阻止用户)
  2. 是否可以将后台线程挂起,直到应用程序终止之前,并在应用程序终止之前运行更新。

如果有人有任何建议,我将不胜感激,因为我需要运行更新,而用户不需要停止使用该应用程序。

最佳答案

为了回答您的问题,我相信#1 第 3 点是针对您在 Iphone 上的特定问题的最佳解决方案。由于您无法启动另一个线程来进行后台处理,因此短暂的等待(大多数程序在开始时都会这样做)是一个标准操作。

我不会尝试实现一种在应用程序终止时推送更新的方法。很多时候,当人们(包括我自己)只想继续执行其他操作时,就会停止运行应用程序。

IMO,在程序开始时等待(希望不要太长)是解决此问题的最佳方案。

关于iphone - 使用数据库时在后台任务中更新 SQLite DB 的最佳策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4099947/

相关文章:

ios - 如何改变细胞重用行为?

multithreading - Windows Azure Worker Role,主线程做什么?

android - 使用服务在后台检查电池电量

sql - 当我在 sqlite 命令行 shell 中使用 varchar(10) 时会发生什么?

ios - 输入更改时重新启动冗长的计算

iPhone 密码锁定机制

iphone - 如何获取提取时区( (GMT+05 :30) from systemTimeZone(NSTimeZone)

java - 从移动设备到服务器的强大文件传输

sqlite - 为什么 SQLite 在 UWP 中崩溃,找不到指定的文件?

java - 获取Key SQLite Android