当app进入后台时,我们可以停止for循环吗?

时间:2014-12-29 13:35:35

标签: iphone ios7

for循环正在运行从数组中获取数据(图像和文本),但是当我按下主屏幕按钮时,循环仍然在后台继续并且持续超过5秒这是默认时间,它不应该多于那个我在谷歌搜索时学习。当我按下主页按钮时,应用程序会委托相应的方法,例如在完成此循环包含方法后也调用的appEnterBackground。那么,按下主页按钮是否可以打破循环。 请指导。

1 个答案:

答案 0 :(得分:2)

如果您想要检测进入后台,除了响应应用委托applicationDidEnterBackground方法之外,您还可以将自己注册为UIApplicationDidEnterBackgroundNotification通知的观察者(例如,使用{ {1}} addObserverForName的方法。

注意,如果要取消请求,则需要确保(a)请求以异步方式运行; (b)它们可以取消。如果您的目标是iOS 7及更高版本,则可以使用[NSNotificationCenter defaultCenter](例如NSURLSessiondataTaskWithRequest返回dataTaskWithURL对象来完成此操作,您可以在其上调用如果需要,可以使用NSURLSessionDataTask方法。然后,您可以为取消任何待处理请求的通知编写处理程序。

如果您确实要取消请求,可以执行上述操作,但如果应用程序在请求运行时碰巧进入后台,您可以简单地请求额外的时间来完成请求。这样您只需几分钟即可完成请求而不是几秒钟。请参阅App Programming Guide for iOS: Background States中的执行有限长度任务

或者甚至更好,您可以将任务添加到后台cancel。请参阅上述App Programming Guide for iOS: Background States中的在后台下载内容部分。这样,即使您的应用程序被暂停(或者,如果您的应用程序因内存压力而终止),任务仍将继续。有关详细信息,请参阅WWDC 2013视频,What's New in Foundation Networking