我需要你的帮助来澄清我对应用程序各种状态的理解。我将陈述我的解释 - 但请随时纠正我。
1)App在前台启动并运行:state = UIApplicationStateActive
2)用户按下主页按钮:state = UIApplicationStateBackground(????)。
Debug stmt in my app shows it to be Active
3)用户双击主页并杀死应用程序:state = UIApplicationStateInactive
如果案例2的值确实是活动的,那么该值何时设置为背景?
我的基于位置的应用依赖于此值来为用户采取适当的操作。
if ( ([UIApplication sharedApplication].applicationState == UIApplicationStateBackground) ||
([UIApplication sharedApplication].applicationState == UIApplicationStateInactive) ) {
// isInBackground = YES;
// ------ UI not available
}
else {
// isInBackground = NO;
// ------ UI is available
}
此致 萨姆。
答案 0 :(得分:52)
当用户点按应用图标时,应用会在成为 UIApplicationStateActive 的过程中短暂地经历 UIApplicationStateInactive 的过渡状态。这是应用程序准备好向用户显示的地方。
当应用程序打开时,应用程序状态为 UIApplicationStateActive 。
如果用户按下主页按钮,并返回到跳板(主屏幕),或者应用程序被某些内容(例如电话呼叫)中断,则应用程序状态将转换回 UIApplicationStateInactive
要使您的应用程序的应用程序状态变为 UIApplicationStateBackground ,您的应用程序必须注册后台进程。了解如何为您的位置服务提供后台服务。
答案 1 :(得分:2)
Apple文档: UIApplicationState Constants Reference
.Active
| Objective-C: UIApplicationStateActive
该应用正在前台运行,目前正在接收事件。
适用于iOS 4.0及更高版本。
.Inactive
| Objective-C: UIApplicationStateInactive
应用程序在前台运行但未接收事件。这个 可能由于中断或应用程序而发生 过渡到背景或从背景过渡。
适用于iOS 4.0及更高版本。
.Background
| Objective-C: UIApplicationStateBackground
该应用正在后台运行。
适用于iOS 4.0及更高版本。
答案 2 :(得分:0)
一些例子:
UIApplicationStateActive
- 应用程序正在前台运行。简单。
UIApplicationStateInactive
- 例如应用程序在后台并通过推送通知(转换为atm)打开。或者控制/通知中心显示在您的应用上方。你有点看,它在前景。
UIApplicationStateBackground
- 应用程序在后台,但仍在运行。 例如播放音乐。然后 - 这可能需要一段时间或不需要(取决于您在后台运行的进程),但在某一点上您的应用程序被杀死。您将在最小化的应用程序之间看到应用程序的快照和图标,但该应用程序将首先再次启动。