当应用程序进入后台时取消API请求

问题描述:

在我的iPhone中启动应用程序时,我需要从服务器下载数据。在下载数据时(在进程的中间),如果我按Home按钮进入后台应用程序。这段时间我需要停止正在执行的API请求。目前applicationDidEnterBackground方法正在延迟调用(下载数据后)。同时,应用程序崩溃。我们如何在应用程序进入后台时取消URL连接。当应用程序进入后台时取消API请求

请帮我一把。

在此先感谢。

一种方法是在您的应用程序控制器中设置某种标志,您可以定期检查该请求是否被取消。

或者,更好的是,NSThread对象提供了一种机制来指示它应该被取消。如果进入后台,请将分离的线程设置为取消(通过[NSThread cancel]),然后在任何API回调中,您应该定期检查[NSThread isCancelled]是否返回YES

以下是关于[NSThread cancel]的Apple文档的链接。

http://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSThread_Class/Reference/Reference.html#//apple_ref/occ/instm/NSThread/cancel

希望这有助于!

+0

不要忘记'接受'你的答案,如果这有助于你。它给参与者在这里回答问题的动力。 :-) –

+0

谢谢迈克尔,这是很好的取消线程,而线程是活在我的应用程序。但是我的应用程序的委托方法applicationdidEnterBackground是延迟调用(延迟是请求的API的下载时间)。所以,如何克服延迟?提前致谢。 – Rajesh