从「墓碑」到见机行事:iOS 后台机制现状分析

15:46

在 WWDC25 的主题演讲上,Apple 提到 iPadOS 26(同时适用于 iOS 26)提供了一个新的后台 API。这个 API 旨在为计算密集型任务提供后台能力,调用时会显示一个实时活动(Live Activity),让用户了解并完全控制当前运行的内容。而到了 iOS 26.1,新的「相册后台备份」API 还允许第三方应用在后台上传照片等资源文件。由此观察,iOS 的后台机制,似乎已经相比于早年那种被称为「墓碑」的假后台发生了很大变化。


在 WWDC25 的主题演讲上,Apple 提到 iPadOS 26(同时适用于 iOS 26)提供了一个新的后台 API。这个 API 旨在为计算密集型任务提供后台能力,调用时会显示一个实时活动(Live Activity),让用户了解并完全控制当前运行的内容。而到了 iOS 26.1,新的「相册后台备份」API 还允许第三方应用在后台上传照片等资源文件。

由此观察,iOS 的后台机制,似乎已经相比于早年那种被称为「墓碑」的假后台发生了很大变化。

没有后台的 iPhoneOS 时代

如果你还记得 iOS 曾经叫 iPhoneOS 的时候,那么你一定记得那个 iPhone 完全没有后台的年代。在当时,每次按下 Home 键回到主页时,当前正在前台运行的 app 就会被直接终止;再次返回 app 时,一切都需要重新启动——也就是完全不存在后台。

虽然 2008 年时 Symbian 和 Android 系统都已支持多任务形态,但在当年的 WWDC 上,iPhone 软件主管 Scott Forstall 表示:「允许后台运行会耗电、占用 CPU。」作为参考,初代 iPhone 采用的是 412 MHz ARM11 处理器,RAM 仅 128 MB。在这样羸弱的硬件配置下,如果直接开放后台,结果可能与当时的 Android 系统无异。因此,采取「前台单任务、后台不开放」的策略,在当时是不得已的折衷方案。

WWDC 2008 现场,图源 Apple Insider

在应用未运行时,为了仍能与用户保持联系,Apple 推出了至今沿用的 Apple 推送通知服务(Apple Push Notification Service,APNs)。该机制的核心是由第三方应用发起消息请求,统一通过 Apple 服务器中转,再推送至用户的 iPhone。

所以,Apple 依靠集中化的推送服务,在当时就把唤醒设备的控制权牢牢掌握在系统层面。这种模式既避免了应用各自消耗电量,又实现了 Apple 想一直强调的目标:在确保用户能及时收到推送的同时,最大程度降低 app 在后台时的能耗。

墓碑后台时期

随着 iOS 4 的发布,iOS 总算有了某种程度上的「多任务」。但是,和桌面系统那种完全无限制的多任务机制不同,iOS 4 上的后台是一套极其有限的「能力集合」,只包括:

  • 在应用间快速切换;
  • 始终允许特定任务;及
  • 短时允许部分任务。

在应用间快速切换

这是使用手机时最常见的操作之一。无论是回到主屏,还是从一个应用切换到另一个应用,实质上都是在应用之间快速切换。

iOS 4 多任务宣传图,图源 Apple

在 iOS 4 中,当我们离开一个应用时,系统不再直接终止应用,而是让其进入「暂停」状态:应用在内存里被「冻结」,不再消耗任何计算资源。当我们需要返回应用时,iOS 会自动「解冻」相关数据,恢复到离开时的状态。这是过去 iOS 系统流畅的原因之一,也就是所谓的「墓碑后台」。

App 在不同的状态间切换,图源 Apple

不过,受限于 iPhone 一向紧张的内存,冻结状态并不能保证应用完全不会被关闭。如果 iOS 发现内存压力过高,会根据从旧到新的顺序依次清理处于冻结状态的应用。这一点在许多旧款 iPhone 上尤为明显:在使用完大型 app 或相机 app 后,回到其他应用(特别是游戏)时,会发现它们已经丢失了冻结前的状态,需要重新加载。

始终允许特定任务

iOS 4 开放了部分场景下「真后台」运行的能力,但严格限定在音频播放、定位服务和 VoIP 这三类场景。

例如,用户可以在使用第三方软件听歌时切换到其他应用;运动与导航类 app 即使在锁屏后也能持续记录位置;支持 VoIP 的应用能够在后台接听来电。这都不需要对应的应用在前台保持活跃。

从今天的角度看,这种只允许特定场景始终保持后台的策略虽然保守,但在当时性能、内存和电池受限的情况下,确实显著提升了用户体验。

短时允许部分任务

除了上述常见后台活动,用户对许多操作同样具有「能顺利完成」的基本预期,例如将文件上传到云端或同步 app 数据。

这类功能不能因为按下 Home 键回到主屏、或短暂切换到另一款应用,就直接停止,否则用户会抱怨 iOS「连最基础的功能都不支持」。但是,当时的电池容量和处理器性能无法支撑多个活跃任务并行,内存规模也远低于桌面环境。如果直接允许 app 在后台长期运行并保持活跃,手机的续航和发热控制将面临巨大挑战。

Apple 给出的方案是允许部分后台短时运行,但依然由 iOS 决定后台可用的时间长度(通常固定为 10 分钟)。一旦超时,iOS 就会强制停止这部分后台任务。

总之,iOS 4 时代的「多任务处理」更像是一组权衡过的「能力」。iOS 首先确保前台交互的流畅性与续航,再保证少数对用户价值极高的场景(音频、定位、VoIP)能持续运行,最后对其他后台任务短暂放行,并由系统综合各项条件随时收回。

更加见机行事的后台机制

随着 iPhone SoC 性能和屏幕素质的提升,应用为了充分发挥硬件能力、支撑更频繁的数据更新与更多元的前台体验,对后台活动的需求也日益增加。从 iOS 7 开始,Apple 逐渐转向了更加见机行事的后台机制。

智能后台刷新

所谓的更加见机行事,本质上是从固定、可预测的后台执行窗口,转向一个由 iOS 本身主导、以预测式调度为核心的智能后台刷新模型。

在这一模型中,app 是否能在后台获得执行时间,不再由应用自行请求决定,而是由 iOS 根据一系列动态信号来判断是否值得在此时唤醒应用。虽然 Apple 未公布具体实现细节,但在当年的 WWDC 上表示:「iOS 会利用系统级的行为模式学习与资源状态评估,对多种信息建模。」

FG 表示前台,较暗淡的颜色表示 iOS 会让 app 发起后台刷新,图源 Apple

根据后续的逆向分析,iOS 首先会「学习」用户打开应用的频率和时间分布,并在此基础上推断用户何时可能会再次打开应用。例如,如果用户早上经常打开一款新闻应用,iOS 就会在用户起床前的某个时间段,提前为该 app 安排后台刷新。

影响后台刷新的多个原因,图源 Apple

除了学习使用频率,iOS 还会综合考虑 iPhone 的电量、机身温度、网络质量、SoC 负载和内存压力等因素。正常情况下,当 iPhone 处于闲置状态时,app 既能刷新内容,又不会对续航产生显著影响。反之,当网络质量变差或电量偏低时,后台刷新就会被延后或暂停。

此外,iOS 还会根据 app 后台执行的成功率、耗时、能耗表现等指标给出一个评分。如果一个 app 总是能在预期内高效地获取数据,其评分就会变高,iOS 便会提高该 app 的后台调度优先级——分配更多刷新机会,并在同一刷新时机优先处理。

当然,iOS 的后台刷新是统一唤醒、统一执行的。系统倾向于集中安排后台任务,从而减少碎片化、频繁的后台唤醒,降低待机能耗。值得注意的是,如果用户在后台切换器中将 app 向上滑动关闭,该 app 将不会进行刷新。

会员专属文章,欢迎加入少数派会员。
优质内容
权益周边
会员社群
power+
评论区
全部评论0
成为少数派会员方可评论,立即加入。若已是少数派会员,点击登录
还没有评论,来发表第一个评论吧
全部评论
还没有评论,来发表第一个评论吧
成为少数派会员方可评论,立即加入。若已是少数派会员,点击登录
会员新功能
内容侧边栏
点击这里拉开侧边栏,即可查看会员内容列表,快速切换内容。