2012-10-24 92 views
2

我目前正在将我的应用从使用ASIHTTPRequest迁移到AFNetworking。我知道尽可能避免同步请求,但在我的应用程序中,我只有一个地方使用我的应用程序。在应用程序委托applicationDidEnterBackground()方法中,我需要运行HTTP请求来查询数据,以在应用程序转到后台时设置应用程序徽章编号。当异步运行时,这很少有效,因为该方法刚刚退出并且应用程序在HTTP请求完成之前暂停。使用ASIHTTPRequest,我使用了[request startSynchronous]方法,这意味着HTTP请求每次都完成100%,并且徽章被正确更新。我看到AFNetworking没有明显的同步选项,那么任何人都可以提出一种可以同步使用的方法,或者一种替代解决方案吗?iOS - 使用AFNetworking执行同步HTTP请求

回答

7

已经找到了做到这一点的方法 - 使用其中一个AFHTTPRequestOperation派生方法 - setShouldExecuteAsBackgroundTaskWithExpirationHandler:在操作系统挂起应用程序之前,该操作会给操作带来额外的时间。所以我的代码是:

[operation setShouldExecuteAsBackgroundTaskWithExpirationHandler:nil]; 
[operation start]; 

这正是我所需要的,并解决了我的问题。

乔纳森

更新:由于鲍勃指出使用这种方法实际上并不同步进行操作,但在我的情况的理想解决方案在没有同步方法。

+1

您开始了背景基础任务。这不会执行请求同步。所以我建议你编辑你的问题来澄清。 –