【问题标题】:iOS - Perform synchronous HTTP request with AFNetworkingiOS - 使用 AFNetworking 执行同步 HTTP 请求
【发布时间】:2012-10-24 16:40:13
【问题描述】:

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

【问题讨论】:

    标签: ios http afnetworking badge


    【解决方案1】:

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

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

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

    乔纳森

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

    【讨论】:

    • 您启动了后台地面任务。这不会同步执行请求。所以我建议你编辑你的问题来澄清。
    猜你喜欢
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    • 2021-04-27
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    • 2011-07-29
    • 1970-01-01
    相关资源
    最近更新 更多