如果用户启动iOS应用,然后锁定设备,那么当设备锁定时iOS应用是否会处于活动状态?我在Apple的开发者文档中找不到答案。
答案 0 :(得分:8)
您可以通过阅读Apple Documentation for UIApplicationDelegete
找到所有不同状态之间的差异。查找标记为管理状态转换的部分,您将找到一个表格,详细说明应用可以处于的不同状态。
未投放
该应用尚未由用户或系统启动或终止。
<强>无效强>
应用程序在前台运行但未接收事件。 (它可能正在执行其他代码。)应用程序通常仅在它转换到不同状态时仅短暂停留在此状态。 进入此状态后,应用程序应将其置于静止状态,并期望很快进入后台或活动状态。
有效强>
应用程序正在前台运行并接收事件。这是前台应用程序的正常模式。 处于活动状态的应用程序没有特殊限制。它是前台应用程序,应该响应用户。
<强>背景强>
该应用正在执行代码,但在屏幕上不可见。当用户退出应用程序时,系统会在暂停应用程序之前将应用程序短暂移动到后台状态。在其他时候,系统可以将应用程序启动到后台(或唤醒暂停的应用程序)并给它时间来处理特定任务。例如,系统可以唤醒应用程序,以便它可以处理后台下载,某些类型的位置事件,远程通知和其他类型的事件。 处于后台状态的应用程序应该尽可能少地工作。请求时间处理特定类型事件的应用程序应该处理这些事件并尽快将控制权返回给系统。
<强>暂停强>
应用程序在内存中但未执行代码。系统会暂停后台应用程序并且没有任何待处理任务要完成。系统可以随时清除已暂停的应用,而无需将其唤醒以便为其他应用腾出空间。
根据您的应用具有的权利以及是否应该在后台运行,当手机在锁定屏幕上时,您的应用可能处于两种状态之一。这些未运行,背景或已暂停
如果您的应用 NOT 意味着在后台运行,它将进入未运行状态,因为它将被终止并将调用方法{{3}当你从锁定屏幕回来时,它将正常重新启动你的应用程序。
如果您的应用有权在进入锁定屏幕时在后台运行,则会进入背景状态,并调用applicationWillTerminate:
,当您从锁定屏幕返回时,您的应用将调用方法applicationDidEnterBackground:
并运行您需要的任何代码,以使应用程序再次处于适当的状态。您可以通过查看applicationWillEnterForeground:
当应用具有后台授权但未运行任何代码并且应用只是在内存中时,应用将进入已暂停状态。如果应用程序处于此状态,系统可以随时清除应用程序以在内存中腾出空间。进入或退出此状态时,这不会调用任何方法。
以下是Apple文档中的图1
答案 1 :(得分:0)
应用程序将被发送到后台并变为非活动状态(没有代码正在运行)。但是,您可以在应用进入后台之前start a background task,这将允许它在设备锁定后运行几分钟...