我开始查这事,倒不是因为我手机快没电了。 而是因为我这台 iPhone 17 Pro Max (iOS 26.1) ------ 一个算力强到大概能带得动一个小国家 的性能怪兽,居然在啥也没干的情况下,莫名其妙地在掉电。 电池后台总是显示着类似这样的信息:

抖音(TikTok 中国版)------ 后台运行:33 分钟
小红书(RedNote)------ 后台运行:18 分钟
没有崩溃,没有发烫,没有任何明显的异常行为。 仅仅是......电量在静默地**"大出血" 。 于是我做了每个好奇的工程师都会做的事:我翻开了 iOS 的系统日志**。 正是在那里,事情开始变得有意思了。
电池详情页在撒谎(礼貌地)
当 iOS 显示"后台使用"时,它的意思并不是:
"这个 App 连续跑了 33 分钟。"
它实际的意思是:
"这个 App 频繁地醒来 ,短促地运行,干了点实活,然后又睡了过去。"
现代 iOS 应用不会死赖在内存里不走,它们是以**"短促爆发"**的方式苏醒的。 而有些 App,极其擅长"间歇性诈尸"。
静默推送:唤醒手机的"耳边低语"
这背后的主要机制被称为 "静默推送" (Silent Push Notification) 。
不同于普通的推送(比如发个横幅通知说"嘿,看这里"),静默推送只是跟 iOS 打了个招呼:
"悄悄把我弄醒,我有活要干。"
载荷极小,威力极大:
css
{
"aps": {
"content-available": 1
}
}
一旦被唤醒,这些 App 就会开始忙活:
- 同步信息流
- 刷新广告
- 更新推荐算法配置
- 预加载视频
- 上传分析数据
海外应用偶尔会这么干。 但国产 App 呢?它们唤醒的频率高到仿佛是按次数领工资似的。(剧透一下:某种程度上,还真是这样。)
BGTaskScheduler:苹果的礼貌接口,被"不讲礼貌"地乱用
为了让 App 守点规矩,苹果推出了现代后台 API:
swift
BGAppRefreshTaskRequest(identifier: "com.example.refresh")
至于那些更"吃性能"的重活儿:
swift
BGProcessingTaskRequest(identifier: "com.example.ml")
理论上,这些接口是为了:
- 轻量级的刷新
- 偶尔的计算任务
- 循规蹈矩的后台维护
但实际上,像抖音/TikTok 这样的 App 却用它来:
- 重新排列你的推荐流
- 在本地给推荐内容打分
- 预加载视频
- 预热缓存
- 同步一堆乱七八糟的 SDK
这哪叫"刷新"?这简直就是进站大修。
视频预加载:电量隐形杀手
短视频应用的命脉在于滑动的流畅度。
所以它们会预加载:
- 接下来的 5 到 20 个视频
- 高清缩略图
- 广告素材
- 直播间预览
这些通常都在后台 偷偷进行,因为等用户打开 App 再加载被认为"太慢了"。 视频解码 + 磁盘 I/O + 网络请求 ------ 三管齐下,电量不崩才怪。
端侧机器学习:隐私赢了,电池亏了
iOS 26 进一步发力"端侧机器学习"(On-Device ML):
- 更强的 Core ML 调度
- 优化了神经网络引擎(Neural Engine)的访问权限
- 支持后台推理
这对隐私保护是好事。 但对那些自带推荐引擎的 App 来说,这无异于一场免费的自助大餐。 所以,当小红书苏醒时,它可能在:
- 在本地给帖子打分
- 进行图像分类
- 预计算用户的点击预测
别忘了,神经网络引擎的运转可不是靠梦想发动的。
接着,我发现了 batterytrapd。 到这一步,一切就不再只是理论推测了。

在我的 JetsamEvent 日志里,我看到了类似这样的记录:
json
"largestProcess": "TikTok"
"freeze_skip_reason": "out-of-budget"
"name": "batterytrapd"
初看之下,batterytrapd 听名字像是个反派。其实不然。
batterytrapd 到底是干嘛的
它是 iOS 内部的一个守护进程 ,专门盯着电量滥用行为。你可以把它理解为: 苹果派出的"防疯跑电"裁判。
它的职责包括:
- 监控唤醒频率
- 追踪后台执行配额(Budget)
- 标记那些运行太勤快或太久的 App
- 为系统的"惩罚决策"提供依据
一旦某个 App 越界,iOS 就会果断出手。 而这正是我在日志里看到的真相。
Jetsam 不等于崩溃,Jetsam 意味着"审判"
日志里的 Jetsam 事件并不是在说"TikTok 崩溃了"。
它说的是: TikTok 超出了允许的后台配额。 执行强制处理。
**"超支"(out-of-budget)**这几个字是核心。这意味着:
- 该 App 消耗的后台能量超过了 iOS 的限额
- 礼貌性的限流已经不管用了
- 系统决定升级管控手段
换句话说:这不再是我的推测------这是实锤证据。
为什么国产 App 更容易触发这个机制?
这还真不是因为"技术不行"。
而是因为利益导向 。 国产 App 的优化目标是: 活跃度、留存率、算法精准度、广告收入。 至于电池寿命?那是被牺牲掉的"附带损伤"。
它们在代码里塞进去了:
- 数不清的分析 SDK
- 一堆广告 SDK
- A/B 测试框架
- 各种反作弊库
每一个组件都想在后台分一杯羹。 所以,App 并不是只醒来一次,它是被五个为了抢方向盘而打架的乘客给吵醒的。
为什么 iOS 26.1 也救不了你
苹果确实收紧了规则:
- 封杀了 VoIP 这种常驻后台的骚操作
- 堵住了后台音频滥用的漏洞
- 限制了地理位置套路
但是: 静默推送 依然存在,BGTaskScheduler 依然存在,后台机器学习 更是比以往任何时候都强大。 App 进化了。 目标没变,只是找了新的后门。
真正管用的"保命"小技巧
最终真正起作用的操作是:
1. 彻底关掉通知 没有通知 = 没有静默推送。 这是最有效的一招。
2. 关闭"后台 App 刷新"

设置 → 通用 → 后台 App 刷新 → 关闭(针对特定 App)。 这能直接砍掉那些预设好的唤醒计划。
3. 彻底掐断地理位置权限 直接设为"永不"。它们根本不需要这权限。
4. 管控蜂窝网络数据 在移动网络下预加载视频,简直就是电量的"剧毒"。
坦白局:最后的结论
我的 iPhone 没坏,iOS 系统也没出问题。
只是这些 App 的生命力实在太"顽强"了。 它们静悄悄地醒来,火速干完一堆活,然后迅速躺平------一天之内能折腾几十次。 而当它们做得太过火时? batterytrapd 就会现身,亮出警徽,iOS 随之发话:"行了,到此为止。"
说实话? 这技术手段确实挺让人佩服的。 ------只要别折腾我的电池就行。