iphone - 在 iOS 应用程序中创建持久任务队列的最佳实践是什么?

标签 iphone ios core-data grand-central-dispatch

我正在使用调度队列来管理一系列后台任务(根据用户需求下载多个文件,无需在 UI 中等待),到目前为止效果很好。此外,我需要持久化未完成的任务,例如,如果没有网络可达性,或应用程序崩溃,或手机电池没电,下次应用程序运行时,所有任务将自动恢复。

我计划让每个任务 block 将任务保存在核心数据上下文中,并在任务完成后将其删除,而且我还需要在应用程序启动时执行检查以查看是否有任何任务要做.

创建此类应用程序的最佳做法是什么?有没有我可以重复使用的示例、教程或库?

最佳答案

您的技术应该很管用。 将管理后台任务的类设计为“盲目地”执行分配给它的任何任务。

从各种 View Controller 向此类提交任务。提交方法应该是这样的

-(void) submitTask:(MyTask*) task  {

  task.completionHandler = ^{ [self.runningTasks removeObject:task];}
  [self.taskQueue addOperation: task];      
}

我假设 MyTask 是 NSOperation 的子类,而 taskQueue 是 NSOperationQueue。 runningTasks 只是一个 NSMutableArray,当您收到 UIApplicationDidEnterBackgroundNotification 时,它会序列化到磁盘(CoreData 或您喜欢的任何格式)。

您也可以使用 GCD 实现类似的设计。

关于iphone - 在 iOS 应用程序中创建持久任务队列的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6867617/

相关文章:

ios - 更新现有实体时核心数据模型配置不兼容

ios - 无法请求访问 Swift 4.2 中的 IOS 日历的权限

iphone - iOS:如何在应用程序崩溃时捕获所有错误数据?

ios - products 文件夹下 app.xctest 为红色正常吗?

ios - iOS 应用程序中不同用户的核心数据

ios - 核心数据不断创建正在保存的文档...文件夹

ios - 在 NSURLSession 中 POST json 字符串

javascript - 提交事件 preventDefault() 不适用于带有 os9 的 iPad/iPhone

ios - 迪尔德 : Symbol not found: _OBJC_CLASS_$_NSTextTab

ios - 从 AppDelegate 推送 View Controller - RESideMenu 类