为什么 iOS 系统会频繁清理后台?应用被频繁清理的原因是什么?
那么 iOS 日志记录里的 Wakeup 是什么?确实不是不是字面意思上的「唤醒」。iOS 日志里记录的 Wakeup,不是 App 使用意义上的「唤醒」,而是线程级别的「唤醒」。这要如何去理解?
一个放入后台的 App,当它想要更新地理位置或刷新消息时,它需要被唤醒才能做这些事情,于是它在被放入后台前,会和系统进行一些约定,比如「我是打车 App,我需要不断更新地理位置,所以你要常常唤醒我。」然后系统就会去唤醒它了。通常 iOS App 被放入后台后,只能在有限的条件下被系统唤醒,而不能随意地自主唤醒进行操作。当我们不想要 App 被后台唤醒后,主动「杀」掉它基本上就可以达到目的了。
一个 App,不管在前台或是后台,在进行具体的任务时,大多都需要用到多线程的模式,比如:为了不阻塞 UI,用一个线程下载内容,下载完成后切换到主线程去更新 UI。这个过程,就是一次 Wakeup。Wakeup 就是线程与线程的通讯,当发生异常情况,不管是 App 代码或系统层面,频繁地进行线程唤醒会占用 CPU 资源以及消耗电量。
而造成这一情况的根本原因仍然是 iOS 13 有系统级的 Bug,原本一些合法地让 App 进入后台后保持一段时间活跃状态的这个机制出了 Bug,导致了凡是用到这个机制的 App,都存在不同程度的被频繁退出的可能。
当然也不能因此就否认有些 App 会采用除系统合法机制之外的让自己保持活跃状态的各种 Trick。众所周知,iOS 13 在隐私和权限方面进一步严格了起来,也许 iOS 13 在处理这些 Trick 的时候,没能处理完美,导致了应用频繁被退出后台的现象发生。
以上是 为什么 iOS 系统会频繁清理后台?应用被频繁清理的原因是什么? 的全部内容, 来源链接: utcz.com/dzbk/601666.html