使用UIApplicationDidEnterBackgroundNotification

Ami*_*wal 8 iphone objective-c uiapplication

什么是UIApplicationDidEnterBackgroundNotificationiPhone应用程序的使用或我们如何从中获益

Ode*_*Dov 26

此通知表示用户在iPhone 4上"退出"您的应用程序 - 当电话或短信进来并且用户接受中断(回答/回复)或用户按下主页按钮时会发生这种情况.

我在SO上找到了这个链接,显示了所有州之间的互动,以及相应的通知:http: //www.drobnik.com/touch/2010/07/understanding-ios-4-backgrounding-and-delegate-messaging/

要使用此通知,您可以将@Dntwan建议实现applicationDidEnterBackground(在您的UIApplicationDelegate类中 - 这是主类).

或者,您可以在代码中的任何位置设置通知处理程序:

[[NSNotificationCenter defaultCenter] addObserver: self
                                         selector: @selector(handleEnteredBackground:) 
                                             name: UIApplicationDidEnterBackgroundNotification
                                           object: nil];
Run Code Online (Sandbox Code Playgroud)

祝好运!

俄德.

  • 稍作澄清,当打进电话时,不会调用UIApplicationDidEnterBackgroundNotification。但是,会使用UIApplicationWillResignActiveNotification。如果您接听电话,则只会发布“ UIApplicationDidEnterBackgroundNotification”。 (2认同)

Kin*_*iss 3

来自苹果文档

\n\n

告诉委托人应用程序现在处于后台。

\n\n
- (void)applicationDidEnterBackground:(UIApplication *)application\n
Run Code Online (Sandbox Code Playgroud)\n\n

参数\napplication\n单例应用程序实例。

\n\n

讨论applicationWillTerminate:\n在 iOS 4.0 及更高版本中,当用户退出支持后台执行的应用程序时,将调用此方法而不是 方法。您应该使用此方法来释放共享资源,保存用户数据,使计时器无效,并存储足够的应用程序状态信息,以便将应用程序恢复到当前状态,以防应用程序稍后终止。您还应该禁用对应用程序\xe2\x80\x99s 用户界面的更新,并避免使用某些类型的共享系统资源(例如用户\xe2\x80\x99s 联系人数据库)。您还必须避免在后台使用 OpenGL ES。

\n\n

此方法的实现大约有五秒钟的时间来执行任何任务并返回。如果您需要额外的时间来执行任何最终任务,您可以通过调用 向系统请求额外的执行时间beginBackgroundTaskWithExpirationHandler:。实际上,您应该从applicationDidEnterBackground:实际上,您应该尽快如果该方法在时间耗尽之前没有返回,您的应用程序将被终止并从内存中清除。

\n\n

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

\n\n

该应用程序还发布了UIApplicationDidEnterBackgroundNotification在调用此方法的同时发布通知,让感兴趣的对象有机会响应转换。

\n