需要澄清UIApplicationState

Sam*_*Sam 16 uiapplication

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

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

 Debug stmt in my app shows it to be Active
Run Code Online (Sandbox Code Playgroud)

3)用户双击主页并杀死应用程序:state = UIApplicationStateInactive

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

我的基于位置的应用依赖于此值来为用户采取适当的操作.

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

问候,山姆.

for*_*got 53

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

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

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

对于您的应用程序成为UIApplicationStateBackground的应用程序状态,您的应用程序必须注册后台进程.了解如何为您的位置服务提供后台服务.

  • @forgot它不完全正确.该应用程序在前台运行,但目前没有接收事件.(它可能正在执行其他代码.)应用程序通常只是暂时保持这种状态,因为它转换到不同的状态.这由apple doc说.你可以在这里了解更多信息.http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html (3认同)

Wag*_*les 5

Apple 文档: UIApplicationState 常量参考

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

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

适用于 iOS 4.0 及更高版本。

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

该应用程序正在前台运行,但未接收事件。这可能是由于中断或应用程序正在切换到后台或从后台切换而导致的。

适用于 iOS 4.0 及更高版本。

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

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

适用于 iOS 4.0 及更高版本。