2011-11-14 45 views

回答

0

从苹果的文档:

当用户按下Home键或系统启动另外一个 应用程序,前台应用程序转换到非活动状态,然后为 背景状态。这些转变导致调用应用程序 委托的applicationWillResignActive:applicationDidEnterBackground:方法

applicationDidEnterBackground:告诉委托该应用程序 现在是在后台。

- (void)applicationDidEnterBackground:(UIApplication *)application

参数

用途:本单应用程序实例。

讨论

在iOS中4.0和更高,这种方法被调用,而不是 applicationWillTerminate:当用户退出支持背景执行的应用 方法。您应该使用此方法来释放共享资源,保存用户数据,使无效的定时器和 足够的应用程序状态信息来将您的应用程序恢复到 其当前状态,以防稍后终止。您还应该禁止更新应用程序的用户界面,并避免使用某些类型的共享系统资源(例如用户的联系人 数据库) 。避免在背景中使用OpenGL ES也是必不可少的。

您执行此方法大约需要五秒钟时间来执行任何任务并返回 。如果您需要更多时间执行 任何最终任务,则可以通过调用beginBackgroundTaskWithExpirationHandler:来请求 系统的额外执行时间。在 的练习中,您应该尽快从applicationDidEnterBackground:as 快速返回。如果在时间运行前该方法没有返回,则应用程序终止并从内存中清除。

在退出此方法之前,您应该执行与调整用户界面 有关的任何任务,但根据需要将其他任务(例如保存状态)应该移动到并发调度队列或辅助线程。 因为它可能是您在 开始的任何后台任务applicationDidEnterBackground:将不会运行,直到方法 退出后,您应该在 开始这些任务之前请求额外的后台执行时间。换句话说,首先调用 beginBackgroundTaskWithExpirationHandler:然后在 调度队列或辅助线程上运行任务。

该应用程序还张贴在其周围会调用这个方法让感兴趣的对象有机会 的过渡响应的 同时 UIApplicationDidEnterBackgroundNotification时通知。

有关如何优雅地过渡到 背景的更多信息,以及有关如何启动后台任务在 退出时间的信息,请参阅iOS Application Programming Guide

相关问题