如何解决iOS电源状态以简单的英语
据我所知,一个应用可以处于3种状态。
- a)前景
- b)背景
- c)睡眠(这是整个设备的状态)
前两者之间的区别似乎很简单。但是第三状态到底是什么?什么时候发生?是在设备锁定时?
而且,非常重要的是,这种情况是否会在很长时间之后发生,或者如果用户不使用它一秒钟,设备是否会进入睡眠状态,并在用户采取措施后立即唤醒?
我已经阅读了不同的页面,看似矛盾的页面,所以要么他们指的是不同的州,要么我只是误解了他们在说什么。
我要实现的目标:几件事。但是其中之一是计时器,该计时器每10秒执行一次操作,如果设备处于睡眠状态,则计时器没有运行-我希望它尽可能早地运行。我应该每秒钟设置一个计时器,并检查是否已过10秒(这样,如果用户将电话上的时间检查了一秒钟,该操作就会发生),或者即使我每10秒设置一次计时器,它也将自动工作秒?
解决方法
应用生命周期和应用可能处于的潜在状态比您所说的要复杂得多。
Apple has comprehensive documentation在应用程序生命周期中,并包含以下图表:
您需要了解的主要状态是:
- 活跃的前台-您的应用正在前台执行(即它是屏幕上的应用)
- 背景-您的应用正在后台积极执行
- 已暂停-您的应用程序在内存中,但当前未执行。
请务必注意,您的应用仅在有限的持续时间内并在特定条件下在后台执行。
- 当您从活动状态转换为暂停状态时,它会在后台短暂执行,以便您有机会在暂停之前执行所有必需的整理工作
- 它将在后台执行以响应特定的后台执行模式和权限,例如位置更新,蓝牙或流音频。
当许多人谈论他们的应用程序“处于后台”时,他们真正的意思是该应用程序已被暂停。 Background
状态是执行状态,而Suspended
状态是非执行状态。在暂停状态下,您的应用仍保留在内存中,并且在恢复执行状态时将在中断处继续执行。
您的应用被暂停时,计时器不会触发。也就是说,计时器到期或触发都不会使您的应用从暂停状态变为后台执行状态。
您跟踪错过事件的最佳策略是记录何时触发事件(即触发Date
),并检查应用进入Foreground Active
状态时是否过去。
当您的应用是前台应用且设备屏幕锁定时,计时器将停止“滴答”,因此您设置一秒钟计时器的策略可能是该情况下的最佳方法。
例如您有一个10秒的计时器,设备休眠时经过了5秒钟。唤醒设备后,将在定时器启动前再过5秒钟。
但是请注意,当用户唤醒设备时,他们很有可能会打开其他应用程序,您的应用程序将被暂停。
您还应该注意,如果iOS需要内存,则当应用处于Suspended
状态时,可以随时将其抛弃(从内存中删除)。在这种情况下,当用户重新进入您的应用程序时,它将从左上方的Unattached
状态重新启动,并且所有内存中的变量都将丢失。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。