我想使用 AFNetworking 对我的服务器执行定期 JSON 请求(更新用户的配置文件并检查更改)。
如果后台作业正在运行但用户按下“返回”按钮或任何使 ViewController 被销毁的东西怎么办?我该如何管理?我的意思是,在这种情况下,我想忽略结果并在用户返回视图时再次执行它
谢谢
PS:我不想要完整的工作代码。我只是想知道如何从后台下载作业(使用 AFNetworking 运行)中知道 ViewController 是否已被破坏。
我想使用 AFNetworking 对我的服务器执行定期 JSON 请求(更新用户的配置文件并检查更改)。
如果后台作业正在运行但用户按下“返回”按钮或任何使 ViewController 被销毁的东西怎么办?我该如何管理?我的意思是,在这种情况下,我想忽略结果并在用户返回视图时再次执行它
谢谢
PS:我不想要完整的工作代码。我只是想知道如何从后台下载作业(使用 AFNetworking 运行)中知道 ViewController 是否已被破坏。
看看这个问题: 发出许多网络请求的 iOS 应用程序的最佳架构?
一种简单的方法是创建一个自定义网络管理器类的单例实例,该类将处理所有请求和网络后台作业。您可以从任何地方(例如视图控制器)访问它,并且它会在应用程序的整个运行时保留其实例。
为了停止正在运行的网络请求,您可以在 View Controllercancel
的方法中发送到网络操作。viewWillDisappear:
同样,为了在视图可见时“自动”启动网络请求,请使用 method viewWillAppear:
。
如果你只是需要完成你的任务。ViewController
意思是,当&仅当特定出现时才尝试获得更改。
使用方法
-(void) viewDidappear{
// Initialise Your task here
}
-(void) viewWillDisappear{
// Destoy(Cancel ) the task
}
一种解决方案是以使用NSNotification机制的方式实现下载:
将 ViewController 设置为侦听器。
设置 bg 下载以在下载过程完成时启动通知。
如果通知触发时 VC 仍然存在,那就太好了 - 它会处理通知并执行您需要的任何操作。如果它不在附近……什么也不会发生。