【问题标题】:calling NSURLConnection on applicationWillTerminate在 applicationWillTerminate 上调用 NSURLConnection
【发布时间】:2016-06-23 18:01:36
【问题描述】:

我正在尝试通过NSURLConnectionapplicationWillTerminate 方法上发送NSURLRequest,该请求在客户端被调用,但它没有到达我的服务器端。

- (void)applicationWillTerminate:(UIApplication *)application
{
    [self sendRandomRequestToServer];
}

我猜是因为终止会杀死进程

我说的对吗?

如果是这样,我该如何解决?

谢谢!

更新 -

我知道苹果给你的 5 秒,所以我做了实验 -

我试图在主线程上运行一个无休止的while 循环,并在willTerminate 上继续运行 2 分钟!!

我还在后台线程上使用afterDelay 0.1 和dispatchAfter 0.1 在willTerminate 上调用了一个方法 - 两者都没有被调用!

所以我不相信“5秒”规则

【问题讨论】:

  • 你检查过applicationWillTerminate 真的被调用了吗?
  • 是的,我做到了,应用程序WillTerminate 中的 NSLog 完成了它的工作。
  • 只有当您将 UIApplicationExitsOnSuspend 设置为 true 时,五秒规则才适用,这会导致您的应用在用户离开它时立即终止。通常,应用程序终止仅在系统急需资源时才会发生,因此您不想在此时阻止执行任何类型的工作。当应用移入后台时发出您的请求。

标签: ios iphone nsurlconnection terminate


【解决方案1】:

您不应在后台运行来自applicationWillTerminate 的代码。

  • 一旦主线程被清除,即使后台线程仍在工作,进程也会退出。

  • applicationWillTerminate 是在主线程上执行的最后一个代码块。这意味着不会调用dispatch_after(time, mainThread)

【讨论】:

  • 谢谢,但这不是我的答案。我已经更新了我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-17
  • 1970-01-01
  • 2020-06-25
  • 2011-05-18
  • 1970-01-01
  • 1970-01-01
  • 2016-02-11
相关资源
最近更新 更多