【问题标题】:background methods are not stopping after viewWillDisappear/ Dealloc在 viewWillDisappear/Dealloc 之后后台方法没有停止
【发布时间】:2014-04-13 10:51:44
【问题描述】:

首先Check This to understand what i am doing

我没有得到上述问题的答案,仍在等待。

现在新的问题是,当我使用以下代码单击后退按钮时,最后一个 ViewController 的方法仍在运行。它将使用内存并继续处理直到它得到响应(这就是我想要做的,但如果用户按下然后我想停止所有方法)

[self.navigationController popViewControllerAnimated:YES];

我该如何阻止它?

【问题讨论】:

  • 好吧,你在前一个屏幕中添加了一些你没有取消的异步。所以他们继续前进。同样在您之前的问题中,您正在为每个请求创建一个新会话。只需使用一个 Session 并在离开屏幕时取消所有正在运行的请求。或者使用像 AFNetworking 这样的库来为您处理请求。那么您需要做的就是跟踪您的请求。
  • @rckoenes 接受一个全局 NSURLSession?如何使用 afnetworking 实现当前代码?

标签: ios uinavigationcontroller afnetworking popviewcontroller


【解决方案1】:

您需要在弹出此控制器之前执行[getTryAgainTask cancel](假设getTryAgainTask 的类型为NSURLSessionDownloadTask。下载任务是异步的,无论控制器(触发它的)是否被释放,它都会运行。这可能会导致保留循环,导致应用程序最终崩溃。截至目前,代码将进入无限循环。更好的解决方案是保留重试次数(比如 3 次)的标签,然后提示用户有关问题,询问他/她是否想再试一次。

【讨论】:

  • 我尝试在 popviewController 上取消,但它没有t worked so i tried suspend which stops all task but is it right way? Retry Button option is good idea but i have to keep running this loop till i get data thats 客户端的要求。
  • 暂停所有任务也是正确的,如果它不会停止不是由该控制器启动的任务。此外,必须有更好的方法从后端本身提供文件 url,这样您就不必不断迭代 可能 文件 URL。
猜你喜欢
  • 2014-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多