需要澄清UIApplicationState

时间:2011-10-29 06:42:21

标签: uiapplication

我需要你的帮助来澄清我对应用程序各种状态的理解。我将陈述我的解释 - 但请随时纠正我。

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
}

此致 萨姆。

3 个答案:

答案 0 :(得分:52)

当用户点按应用图标时,应用会在成为 UIApplicationStateActive 的过程中短暂地经历 UIApplicationStateInactive 的过渡状态。这是应用程序准备好向用户显示的地方。

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

如果用户按下主页按钮,并返回到跳板(主屏幕),或者应用程序被某些内容(例如电话呼叫)中断,则应用程序状态将转换回 UIApplicationStateInactive

要使您的应用程序的应用程序状态变为 UIApplicationStateBackground ,您的应用程序必须注册后台进程。了解如何为您的位置服务提供后台服务。

答案 1 :(得分:2)

Apple文档: UIApplicationState Constants Reference

  • Swift: .Active | Objective-C: UIApplicationStateActive
  

该应用正在前台运行,目前正在接收事件。

     

适用于iOS 4.0及更高版本。

  • Swift: .Inactive | Objective-C: UIApplicationStateInactive
  

应用程序在前台运行但未接收事件。这个   可能由于中断或应用程序而发生   过渡到背景或从背景过渡。

     

适用于iOS 4.0及更高版本。

  • Swift: .Background | Objective-C: UIApplicationStateBackground
  

该应用正在后台运行。

     

适用于iOS 4.0及更高版本。

答案 2 :(得分:0)

一些例子:

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

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

UIApplicationStateBackground - 应用程序在后台,但仍在运行。 例如播放音乐。然后 - 这可能需要一段时间或不需要(取决于您在后台运行的进程),但在某一点上您的应用程序被杀死。您将在最小化的应用程序之间看到应用程序的快照和图标,但该应用程序将首先再次启动。