微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

iOS电源状态以简单的英语

如何解决iOS电源状态以简单的英语

据我所知,一个应用可以处于3种状态。

  1. a)前景
  2. b)背景
  3. c)睡眠(这是整个设备的状态)

前两者之间的区别似乎很简单。但是第三状态到底是什么?什么时候发生?是在设备锁定时?

而且,非常重要的是,这种情况是否会在很长时间之后发生,或者如果用户不使用它一秒钟,设备是否会进入睡眠状态,并在用户采取措施后立即唤醒?

我已经阅读了不同的页面,看似矛盾的页面,所以要么他们指的是不同的州,要么我只是误解了他们在说什么。

我要实现的目标:几件事。但是其中之一是计时器,该计时器每10秒执行一次操作,如果设备处于睡眠状态,则计时器没有运行-我希望它尽可能早地运行。我应该每秒钟设置一个计时器,并检查是否已过10秒(这样,如果用户将电话上的时间检查了一秒钟,该操作就会发生),或者即使我每10秒设置一次计时器,它也将自动工作秒?

解决方法

应用生命周期和应用可能处于的潜在状态比您所说的要复杂得多。

Apple has comprehensive documentation在应用程序生命周期中,并包含以下图表:

enter image description here

您需要了解的主要状态是:

  • 活跃的前台-您的应用正在前台执行(即它是屏幕上的应用)
  • 背景-您的应用正在后台积极执行
  • 已暂停-您的应用程序在内存中,但当前未执行。

请务必注意,您的应用仅在有限的持续时间内并在特定条件下在后台执行。

  • 当您从活动状态转换为暂停状态时,它会在后台短暂执行,以便您有机会在暂停之前执行所有必需的整理工作
  • 它将在后台执行以响应特定的后台执行模式和权限,例如位置更新,蓝牙或流音频。

当许多人谈论他们的应用程序“处于后台”时,他们真正的意思是该应用程序已被暂停。 Background状态是执行状态,而Suspended状态是非执行状态。在暂停状态下,您的应用仍保留在内存中,并且在恢复执行状态时将在中断处继续执行。

您的应用被暂停时,计时器不会触发。也就是说,计时器到期或触发都不会使您的应用从暂停状态变为后台执行状态。

您跟踪错过事件的最佳策略是记录何时触发事件(即触发Date),并检查应用进入Foreground Active状态时是否过去。

当您的应用是前台应用且设备屏幕锁定时,计时器将停止“滴答”,因此您设置一秒钟计时器的策略可能是该情况下的最佳方法。

例如您有一个10秒的计时器,设备休眠时经过了5秒钟。唤醒设备后,将在定时器启动前再过5秒钟。

但是请注意,当用户唤醒设备时,他们很有可能会打开其他应用程序,您的应用程序将被暂停。

您还应该注意,如果iOS需要内存,则当应用处于Suspended状态时,可以随时将其抛弃(从内存中删除)。在这种情况下,当用户重新进入您的应用程序时,它将从左上方的Unattached状态重新启动,并且所有内存中的变量都将丢失。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。