2012-02-23 112 views
4

我有一个要求,用户可以一个接一个地下载多个文件。 当我的应用程序进入后台或iPad被锁定时,下载或网络服务响应只能持续10分钟。下载iPad设备锁定时间超过10分钟的大文件

我的下载发生在一个单独的线程中,我已经实施了beginBackgroundTaskWithExpirationHandler:一些谷歌搜索和在stackoverflow链接。

How to implement Task completion

App crash because of auto lock in iphone?

和iOS documetation

https://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html

现在我的一些选定的文件被下载和一些失败,因为一次只能10分钟,最大运行后台任务。

有没有其他选择? 我应该在应用程序进入后台时完全暂停下载吗? 任何人都可以帮我解决这个问题吗?

我已经成功地通过没有结束后台任务这样做,如果我的下载正在进行

bgTask = [app beginBackgroundTaskWithExpirationHandler:^{ NSLog(@"\n beginBackgroundTaskWithExpirationHandler called \n"); if(![self checkIfDownloadInProgress]){ [self endTaskOnCompletion]; } }];

这只能当设备由用户手动锁定。如果设备在2分钟后自动锁定,应用程序运行10分钟,然后崩溃 任何人都可以帮忙吗?

+0

当'beginBackgroundTaskWithExpirationHandler:'被调用时,我已经通过不使任务失效来延长后台任务。我只有在下载完成时才使任务无效,并且这在手动锁定设备时有效。我编辑了我的问题并添加了代码。但是,当设备自动锁定时,应用程序在10分钟后崩溃。任何人都可以帮忙吗? – krusty 2012-04-25 15:59:51

+0

嗨krusty。你有没有尝试过使用GCD?它应该填满你的需求。 – Selvin 2012-05-02 11:56:53

回答

0
  1. 如果没有必要暂停它。这是你能做的最好的事情。
  2. 其他当你的过期处理程序被调用,那么你可以重新开始后台任务,你会得到更多的10分钟。
+0

你能告诉我该怎么做吗? – krusty 2012-02-23 12:18:32

相关问题