AFNetworking是否有后台支持?

And*_*dan 26 iphone asihttprequest ios afnetworking

我正在调查AFNetworking作为替代品ASIHTTPRequest,并注意到它是否支持后台下载/上传完全缺乏信息.

使用ASIHTTPReqeust对象,您所要做的就是调用[request setShouldContinueWhenAppEntersBackground:YES],请求将在后台继续.这有什么支持AFNetworking吗?

mat*_*ttt 48

编辑:从AFNetworking 1.0RC1开始,这是一个明确的功能.AFURLConnectionOperation现在有了这个方法setShouldExecuteAsBackgroundTaskWithExpirationHandler:,它可以为您透明地管理所有这些.


这是一个隐含的功能,所以我并没有真正考虑做广告.你需要做的就是:


- (void)applicationWillResignActive:(UIApplication *)application {
    __block UIBackgroundTaskIdentifier backgroundTaskIdentifier = [application beginBackgroundTaskWithExpirationHandler:^(void) {
        [application endBackgroundTask:backgroundTaskIdentifier];
        [[YourRestClient sharedClient] cancelAllHTTPOperations];
    }];
}

或者,如果您自己管理自己的运营NSOperationQueue,那么就-cancelAllOperations在这里.

  • @Hunter我想,你明白错了.调用beginBackgroundTaskWithExpirationHandler可确保请求在后台继续.在应用程序处于非活动状态较长时间(例如10分钟)之前,请求不会被取消. (8认同)
  • 警告:不要在applicationWillResignActive上使用mattt的beginBackgroundTaskWithExpirationHandler代码而不添加对endBackgroundTask的匹配调用 - 否则IOS将在600秒后终止您的应用程序,并且前景化将重新启动您的应用程序. (7认同)
  • @mattt您可能想要更新您的答案,提及`setShouldExecuteAsBackgroundTaskWithExpirationHandler:`您已添加.我没有意识到它是在我几周前下载的版本中出现的. (7认同)
  • Mattt - 听起来像是在为移动到后台时提供取消网络的解决方案,尽管问题是关于在移动到后台时产生/继续AFNetworking操作.对此的想法?鉴于大多数自动对焦方法都是基于块的/立即返回,我发现系统认为它们在真正运行之前已经完成了......也许只是在后台模式下运行时使用waitUntilFinished? (5认同)
  • `- (void)applicationWillResignActive:(UIApplication *)application { UIBackgroundTaskIdentifier backgroundIdentifier = [application beginBackgroundTaskWithExpirationHandler:^(void) { [[AFHTTPClient sharedClient] cancelAllHTTPOperations]; }]; [应用结束BackgroundTask:backgroundIdentifier]; }` (3认同)