17

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

1) 应用程序在前台启动并运行:state = UIApplicationStateActive
2) 用户按下主页按钮:state = UIApplicationStateBackground (????)。

 Debug stmt in my app shows it to be Active

3) 用户双击 Home 并终止应用: state = UIApplicationStateInactive

如果 case 2 的值确实是 Active,那么该值何时设置为 Background?

我的基于位置的应用程序依赖此值来为用户采取适当的行动。

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

问候,山姆。

4

3 回答 3

54

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

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

如果用户按下主页按钮,并返回到跳板(主屏幕),或者应用程序被诸如电话之类的事情中断,应用程序状态将转换回UIApplicationStateInactive

为了使您的应用程序的应用程序状态变为UIApplicationStateBackground,您的应用程序必须注册一个后台进程。研究如何背景化您的位置服务。

于 2012-03-01T00:01:23.417 回答
4

Apple 文档: UIApplicationState 常量参考

  • 斯威夫特:.Active| 目标-C:UIApplicationStateActive

该应用程序正在前台运行并且当前正在接收事件。

在 iOS 4.0 及更高版本中可用。

  • 斯威夫特:.Inactive| 目标-C:UIApplicationStateInactive

应用程序在前台运行,但未接收事件。这可能是由于中断或应用程序在后台转换或从后台转换的结果。

在 iOS 4.0 及更高版本中可用。

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

该应用程序正在后台运行。

在 iOS 4.0 及更高版本中可用。

于 2016-03-18T17:57:06.430 回答
1

一些例子:

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

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

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

于 2016-10-12T14:35:11.850 回答