TECHNICAL DOCUMENT

华为「应用启动管理」为什么会让家长管控 App 失效

你设了 60 分钟限额,孩子看了 90 分钟。没提醒,没阻断。你打开 App 想看看哪儿出了问题——结果就在你盯着屏幕的这几秒里,那个数字自己悄悄追上来了。

最后那个细节才是线索。如果计数只在你打开 App 的时候才动,那不是 App 把限额算错了,是它当时根本没在跑。

在华为手机上,这件事通常指向一个叫应用启动管理的设置。而且关键在于:它和绝大多数教程让你去做的电池白名单是两个完全不同的开关。电池那一步你做得再标准,这个问题照样在。

这篇是华为专篇。覆盖八个品牌的通用版在这里:为什么省电优化会把家长管控 App 关掉,屏幕时间限额跟着失效

三十秒版本

  1. 是两个开关,不是一个。 电池优化和应用启动管理彼此独立。华为自己的支持页面把它们列成同一个 App 下的两个不同步骤
  2. 应用启动管理默认是「自动管理」,也就是把”这个 App 能不能启动、能不能继续跑”交给系统决定。
  3. 你要的是「手动管理」,并且把三个开关全部打开:允许自启动允许关联启动允许后台活动
  4. 菜单路径随版本变,华为官方页面自己就给了好几个不同位置。在设置里直接搜索是最稳的走法。
  5. 设完要验证。 下面有个两三分钟就能做完、不需要任何技术工具的测试。

是两个开关,不是一个

这是整篇的核心,所以有必要说明它不是我的个人判断。

华为自己那篇讲怎么让 App 在后台活下来的支持文档,把下面这些列为并列的、分开的步骤(原文以华为自家 App 举例,这里换成”该应用”):

后台存活保护:手机进入 手机管家 > 应用启动管理 > 手动管理,关闭该应用右侧自动管理的开关,打开允许自启动允许关联启动允许后台活动 三个开关。

后台耗电保护:手机进入设置,搜索电池优化,进入电池优化模块后,点击左上角”▼“选择所有应用,找到该应用,将它后面的开关设置为不允许

(原文这一步举的例子是华为自家的”智能关怀App”,我把它换成了”该应用”通指,其余措辞照抄。)

两个步骤,两个地方,同一个 App。第二步——电池白名单——几乎是所有”怎么让 App 不被杀”教程唯一会讲的那一步,也是我们自己早期的引导流程只讲了的那一步。它确实必要。但它单独做完,不够。

关于这一点能推广到多远,我想说准确些:华为官方把这两件事记录为都得做的、彼此分开的步骤。我能补充的是我们自己的测试——我们见过一台手机,安卓这一侧的每一项都是对的:App 在电池优化白名单里、待机分组是豁免的、后台运行没有被限制,而监控服务照样拿不到 CPU 时间。安卓的接口读不到华为应用启动管理的状态,所以 App 没有任何办法查一下这个开关然后告诉你”这里不对”。这也正是你现在需要读一篇文章、而不是在 App 里看到一条提示的原因。

「自动管理」到底做了什么

华为的页面用三项权限来描述应用启动管理:这个 App 能不能自己启动、能不能被别的 App 唤起、能不能在后台活动。保持自动管理,就是把这三件事的决定权交给系统。

在原生安卓上,一个需要长期运行的 App 通常靠前台服务来保护自己——就是在通知栏留一条常驻通知的那个机制。谷歌关于安卓应用冻结器的官方文档写明:有可见界面或前台服务的应用不会被冻结,只有进入缓存状态的进程才会。屏幕时间类 App 的设计就建立在这条之上。

我们在华为设备上测到的是:这层保护没有守住。在一台 GFY-AL00(EMUI 14.2,Android 12) 上,应用启动管理保持默认的自动管理时,视频 App 在前台期间,我们的监控服务几乎拿不到任何 CPU 时间——进程还在,只是不跑了。把这一个设置改成手动管理之后,同样的测法变成三分钟里约 45 秒 CPU 时间,首页的剩余分钟也重新开始实时往下掉。

关于这个测量,有两句老实话。第一,这是一台手机、一个系统版本、一次测试——我说的是我们手上这台设备的表现,不是关于所有华为手机的规律。第二,这不是厂商在使坏:激进的后台管理正是这些手机续航好的重要原因,而且它是在一个后台滥用唤醒确实很普遍的市场里长出来的。代价是,你希望它在后台跑的那些 App,得由你亲手在一个几乎没人会去的地方把它们标出来。

怎么改

华为在 EMUI 和 HarmonyOS 的不同版本里挪过、也改过这个功能的名字,官方页面之间本身就对不齐。与其印一条路径然后祈祷它和你的手机对得上,不如用这条与版本无关的走法(它出自华为英文支持页的 “search for and access App launch”,中文措辞是我对应过来的,不是华为中文页的原话):

打开设置,搜索应用启动管理,关闭该应用的自动管理,然后在弹出的对话框里把允许自启动允许关联启动允许后台活动三个开关全部打开。

如果你更习惯一层层点进去,下面是华为官方文档里出现过的路径,以及各自页面上标注的适用版本:

路径华为页面标注的版本
手机管家 → 应用启动管理 → 手动管理EMUI 9.0 及以上
手机管家 → 应用启动管理(华为英文页把”手机管家”写作 Optimizer)HarmonyOS 2.0;该英文页另注 Android 9.0 及以上
设置 → 应用和服务 → 应用启动管理HarmonyOS 2.0(只在华为中文页上见到,我没找到对应的英文页
设置 → 启动管理(英文页作 Launch manager)未标注
设置 → 应用和服务 → 应用 → 该应用 → 耗电详情 → 启动方式标注为与系统版本无关

有一条需要专门更正,因为它被抄得实在太广:设置 → 电池 → 应用启动管理——几乎所有第三方教程都这么写,而我在华为任何一个官方页面上都没有找到它。它在你的手机上说不定真能走通,但它不是华为自己的表述,所以我不会把它当官方路径印在这里。

然后别忘了另一半,电池那一步:

设置 → 搜索电池优化 → 左上角”▼“选择所有应用 → 找到该应用 → 开关设为不允许

华为官方还另外记录了两步,都值得一起做。一是同一篇中文页里的第三步:按出近期任务,把该应用的卡片下拉锁定——这三步是华为在那一页里成套给的。二是华为英文版《电池设置》页上的 更多电池设置 → 休眠时保持网络连接(原文 More battery settings → Stay connected while asleep),对一个需要整夜盯着的 App 有用。

怎么确认真的生效了

这一段是大多数教程会跳过的,而跳过它的结果就是:你设了五个开关,却不知道哪个有用、有没有用。这个测试不需要任何工具。

  1. 记下屏幕时间 App 上显示的剩余分钟。
  2. 打开孩子真正会用的那个 App(视频、游戏都行),让它在前台停三分钟。别来回切,也别打开屏幕时间 App。
  3. 切回去看剩余分钟。

生效了:数字少了大约三分钟,而且你一看就是对的。

还在被拦:数字没动;或者你能看见它在你打开 App 之后一两秒里跳着追上来。那个”追上来”意味着孩子在看的时候它没在计数,是事后才把这段补算回去的。做得好的 App 会把这段补上,孩子不会白赚时间——但补算不等于在该拦的那一刻拦住,而一个晚十分钟才生效的限额,正是你来看这篇的原因。

如果改成手动管理之后还是被拦,接着查上面那条电池优化,以及这个 App 是不是曾经被强行停止过(见下一节)。

这些做完之后,仍然解决不了的事

三条,直说。

强行停止是终点。 只要有人进设置找到这个 App 点了强行停止,没有任何 App 能把自己救回来。这是安卓的设计,不是某个 App 没做好:谷歌明确写了,被强行停止的应用会一直保持这个状态,直到用户自己再次打开它,在那之前连”开机完成”的广播都收不到;Android 15 还会额外取消它已经排好的待处理意图、并把它的桌面小组件置灰。第三方没有绕过的办法。任何声称能绕过的说法都不可信——包括我们自己帮助文档的旧版本,它曾经写过”被强行关掉后 App 会自动重新启动并恢复守护”。它不会。没有 App 会。

把应用启动管理设对,不等于保证。 在我们测的那台设备上它确实有效。但激进的省电策略在不同机型、不同 ROM 版本、不同区域固件上都不一样,没有任何设置能让一个安卓 App 变得杀不掉。

App 既跳不到这个页面,也读不到它的状态。 如果你好奇为什么屏幕时间类 App 在华为上只给你一段文字步骤、而不是一个”点这里直接跳过去”的按钮——原因在这儿。两条路我们都试过。用明确的组件名直接打开那个页面会抛出安全异常,因为目标要求一个华为签名级权限,只有华为自己的系统应用拿得到;改走通用意图,则会落到一个空的选择器对话框上,因为系统会按调用方的权限二次过滤候选项,而候选项全部被过滤掉了。这是在一台 GFY-AL00(EMUI 14.2)上复现了两次的结果。所以第三方 App 能做到的诚实上限,就是把你送到它自己的应用详情页、然后把文字步骤写给你看——这也正是”为什么需要有这么一篇文章”的原因。

相关阅读


本文作者是一个做小龟时光的家长,那是一个面向 6-14 岁孩子的安卓屏幕时间 App:在每日限额的 60%、75%、90% 各安静提醒一次,到 100% 才真正阻断。免费,无广告,无内购。孩子的屏幕时间数据默认留在手机本地——唯一会离开设备的是匿名的崩溃报告和使用统计,这一点我们的隐私政策里也是这么写的。

参考来源

每条都标注了获取层级,因为这直接决定该条结论能承受多重的分量。

  • 《应用退出后台后被清理怎么办》 华为消费者业务支持(中国站)。(全文两次获取,第二次要求逐字复现,两次一致。中文三步骤——后台存活保护/后台耗电保护/后台清理保护——的出处,也是”应用启动管理与电池优化是两个分开步骤”这一结论的直接依据。页面标注 EMUI 9.0 及以上。)
  • 《How Do I Keep an App Running in the Background》 华为消费者业务支持(全球英文站)。(全文两次获取。上一条的英文对应页,三个开关英文名 Auto-launch / Secondary launch / Run in background 的出处。)
  • 《Setting App Launch》 华为消费者业务支持(全球英文站)。(全文两次获取。“打开设置、搜索应用启动管理、关闭自动管理”这条与版本无关走法的出处。页面未标注系统版本。)
  • 《Launch manager》 华为消费者业务支持(全球英文站)。(全文两次获取。该页用的是 Launch manager 而非 App launch,说明命名本身在官方内部就不统一。未标注版本。)
  • 《应用启动管理(HarmonyOS)》 华为消费者业务支持(中国站)。(全文两次获取。设置 → 应用和服务 → 应用启动管理 这条 HarmonyOS 路径的出处。注意其英文对应页把这一步写成了 Settings → Apps & services → Apps,漏掉了功能本身,所以英文路径不以那页为准。)
  • 《Power usage details》 华为消费者业务支持(英国站)。(全文两次获取。耗电详情 → 启动方式 这条路径的出处,页面标注为与系统版本无关。)
  • 《Cached apps freezer》 安卓开源项目(AOSP)。(全文获取。“有可见界面或前台服务的应用在原生安卓上不会被冻结”的出处。)
  • 《Behavior changes: all apps》(Android 15) 安卓开发者文档。(全文获取。强行停止后状态持续到用户主动打开、开机广播的投递时机、以及 Android 15 取消待处理意图并置灰小组件的出处。)
  • 我们自己的真机测试,华为 GFY-AL00,EMUI 14.2,Android 12。(应用启动管理在”自动”与”手动”两种状态下,监控服务 CPU 时间的对比——约等于零 对 三分钟约 45 秒,同时首页剩余分钟恢复实时更新;以及两条深链路径的失败结果——明确组件抛安全异常、通用意图落到空选择器,各复现两次。一台设备、一个 ROM 版本,作为观察记录,不作为品牌层面的结论。)
  • dontkillmyapp.com/huawei。(社区维护,华为官方文档。这里只用来说明一件事:被广泛转抄的”设置 → 电池 → 应用启动管理”这条路径,来源在华为官方页面之外。可以参考,但不能当作华为表述的依据。)

未核实: “设置 → 电池 → 应用启动管理”这条路径;“高耗电提醒”是否为华为当前官方用词;“受保护应用”是否仍是当前菜单项(旧版 EMUI 有,但在我能取到的官方页面上,它已不是一个在用的功能名)。

原文出处 public/33-huawei-app-launch-management.md
由 小龟时光团队 编写与维护

添加开发者微信

扫码与我建立联系

WeChat QR Code

验证信息请注明: 小龟时光 用户