ios后台下载完成但视图已被破坏

时间:2013-10-21 07:41:50

标签: ios multithreading afnetworking

我想使用AFNetworking对我的服务器执行定期JSON请求(更新用户的个人资料并检查更改)。

如果后台作业正在运行但用户按下“后退”按钮或任何使ViewController被销毁的内容怎么办?我该怎么办呢?我的意思是,在这种情况下,我想忽略结果并在用户返回View

时再次执行

谢谢

PS:我不想要一个完整的代码。我只是想知道如果ViewController被破坏,我可以从后台下载工作(使用AFNetworking运行)知道。

4 个答案:

答案 0 :(得分:1)

看看这个问题: Best architecture for an iOS application that makes many network requests?

一种简单的方法是创建自定义网络管理器类的单例实例,该实例将处理所有请求和网络后台作业。您可以从任何地方(例如视图控制器)访问它,并为应用程序的整个运行时保留其实例。

关于单身人士:http://en.wikipedia.org/wiki/Singleton_pattern

答案 1 :(得分:1)

为了停止正在运行的网络请求,您可以将cancel发送到View Controller的方法viewWillDisappear:中的网络操作。

同样,为了在视图变得可见时“自动”启动网络请求,请使用方法viewWillAppear:

答案 2 :(得分:1)

如果您只是需要完成任务。意思是,试图获得改变,如果&仅当特定ViewController出现时。

使用方法

-(void) viewDidappear{
// Initialise Your task here 
}

-(void) viewWillDisappear{
// Destoy(Cancel ) the task 
}

答案 3 :(得分:1)

一种解决方案是以使用NSNotification机制的方式实现下载:

  1. 将ViewController设置为侦听器。

  2. 设置bg下载以在下载过程完成后启动通知。

  3. 如果通知触发时VC仍然存在,那就太好了 将处理通知并做任何你需要的事情。如果它不在......没有任何反应。