2

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

4

1 回答 1

6

已经找到了执行此操作的方法 - 使用 AFHTTPRequestOperation 派生类之一,有一种方法 - setShouldExecuteAsBackgroundTaskWithExpirationHandler: 在操作系统暂停应用程序之前给操作额外的时间来完成。所以我的代码是:

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

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

乔纳森

更新:正如 Bob 指出的那样,使用此方法实际上并不会同步执行操作,但在没有同步方法的情况下,这是我的理想解决方案。

于 2012-10-29T17:05:02.100 回答