2011-10-29 269 views
15

我需要你在我澄清一个应用程序的各种状态的理解帮助。我将阐明我的解释 - 但请随时纠正我。需要澄清UIApplicationState

1)App在前台启动并运行:state = UIApplicationStateActive
2)用户按下home键:state = UIApplicationStateBackground(????)。

Debug stmt in my app shows it to be Active 

3)用户的双抽头主页并杀死该应用:状态= UIApplicationStateInactive

如果壳体2的值确实是活动的,则当将该值设置为背景?

我的基于位置的应用程序依赖于这个价值采取适当行动的用户。

if (([UIApplication sharedApplication].applicationState == UIApplicationStateBackground) || 
    ([UIApplication sharedApplication].applicationState == UIApplicationStateInactive)  ) { 
    // isInBackground = YES; 
    // ------ UI not available 
} 
else { 
    // isInBackground = NO; 
    // ------ UI is available 
} 

Regards, Sam。

回答

51

当用户点击应用程序图标,应用程序通过简单的在它的途中UIApplicationStateInactive过渡状态去成为UIApplicationStateActive。这是应用程序准备向用户显示的位置。

当应用程序打开时,应用程序状态为UIApplicationStateActive

如果用户按下主页按钮,返回到跳板(主屏幕),或应用程序被中断的东西,比如一个电话,应用程序的状态转换回UIApplicationStateInactive

对于您的应用程序的应用程序状态变为UIApplicationStateBackground,您的应用程序将不得不注册后台进程。研究如何为您的位置服务提供背景。

+1

谢谢!!非常清楚地解释。 – Sam

+3

@forgot它不完全正确。“该应用程序在前台运行,但目前没有收到事件。 (尽管它可能正在执行其他代码。)一个应用程序通常只会在转换到其他状态时暂时停留在此状态。“苹果文档说。你可以在这里了解到更多信息.http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html – Kamarshad

+0

我明白,它似乎并没有与这个问题相关时间。我会编辑它以显示更完整的答案。 – forgot

2

苹果文档: UIApplicationState Constants Reference

  • 斯威夫特:.Active | Objective-C的:UIApplicationStateActive

应用程序是在前台运行,目前接收事件。

可提供的iOS 4.0及更高版本。

  • 斯威夫特:.Inactive | Objective-C的:UIApplicationStateInactive

应用程序是在前台运行,但不接收事件。此 可能会因为中断或因为应用程序 转换为背景或从背景转换而发生。

可提供的iOS 4.0及更高版本。

  • 斯威夫特:.Background |目标C:UIApplicationStateBackground

该应用在后台运行。

可提供的iOS 4.0及更高版本。

0

一些例子:

UIApplicationStateActive - 应用程序在前台运行。简单。

UIApplicationStateInactive - E.g.应用程序在后台并通过推送通知(转换atm)打开。或者控制/通知中心显示在您的应用上方。你看到它,在前景。

UIApplicationStateBackground - 应用程序在后台,但仍在运行。 E.g.正在播放音乐。然后 - 这可能需要一段时间(取决于你在后台运行的进程),但是有一点你的应用程序被终止。您会在最小化的应用程序之间看到应用程序的快照和图标,但该应用程序将首先再次启动。