我想使用AFNetworking对我的服务器执行定期JSON请求(更新用户的个人资料并检查更改)。
如果后台作业正在运行但用户按下“后退”按钮或任何使ViewController被销毁的内容怎么办?我该怎么办呢?我的意思是,在这种情况下,我想忽略结果并在用户返回View
时再次执行谢谢
PS:我不想要一个完整的代码。我只是想知道如果ViewController被破坏,我可以从后台下载工作(使用AFNetworking运行)知道。
答案 0 :(得分:1)
看看这个问题: Best architecture for an iOS application that makes many network requests?
一种简单的方法是创建自定义网络管理器类的单例实例,该实例将处理所有请求和网络后台作业。您可以从任何地方(例如视图控制器)访问它,并为应用程序的整个运行时保留其实例。
答案 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机制的方式实现下载:
将ViewController设置为侦听器。
设置bg下载以在下载过程完成后启动通知。
如果通知触发时VC仍然存在,那就太好了 将处理通知并做任何你需要的事情。如果它不在......没有任何反应。