文章

详解三星OneUI后台与电池管理设置项

三星 OneUI 的应用自启与后台权限,以及电源管理一直比较乱(但关联关系做的比较智能)。其实也不仅是三星,Google 对大陆的流氓应用一直后知后觉,尽管近期多个系统底层更新不断收紧这方面政策,但脚步还是太慢,与此同时也造成不同系统版本(也称 API 等级)对后台的限制不一样,也就导致了许多云里雾里的设置。

这些本就零散的设置,再加上厂商对中国区的优化,还有翻译的不同,许多原因共同作用最终导致了 OneUI 这样的局面。其实如果能正确理解并应用这些设置,不仅能最大化省电,甚至在某些条件下还能够收到通知推送。我根据实验以及作为业余 Android 开发者的经验,总结下不同设置的实际意义。

**首先强调,网上目前大部分解读都是错误的,但依然感谢分享的同学为之做出的努力。**我也不能保证下面的解释完全正确,欢迎大佬指正。

设置项总览

以国行三星 S10 OneUI 2.5 为例。

三星与应用自启、后台、耗电优化相关的设置项入口一共有7个,他们分别是:

  1. 智能管理器 - 自动运行应用程序
  2. 设置 - 常规管理 - 电池 - 用电管理 - 自动运行应用程序
  3. 设置 - 应用程序 - 某个应用 - 电池 - 允许后台活动
  4. 设置 - 常规管理 - 电池 - 用电管理 - 深度休眠应用程序
  5. 设置 - 常规管理 - 电池 - 用电管理 - 让未使用的应用程序进入休眠
  6. 设置 - 应用程序 - 某个应用 - 电池 - 优化电池使用量
  7. 设置 - 应用程序 - 右上角菜单 - 特殊访问 - 优化电池使用量

这7个入口中实际上只有3个具体功能:其中 [1, 2, 3] 是一回事,暂且称之为自启与后台;[4, 5] 是一回事,暂且称之为休眠;[6, 7] 是一回事,称之为优化电池使用量

三个具体功能

设置项具体行为

自启与后台

这里指的是智能管理器-自动运行应用程序以及上述与它在同一个类别里的设置项。

自启与后台是(日常使用中)最严格的限制,也是三星给中国定制的本土化功能,专制流氓。被禁止的应用程序无法以以下任意方式自启动:

  • 监听系统启动广播实现开机自启。
  • 监听系统其他事件广播自启。例如时间改变、网络状态改变、充电状态改变等。
  • 被其他应用唤醒后台服务。依然允许类似拉起支付宝支付这种直接打开界面的。
  • 其他非用户手动打开的启动方式。

除此之外,被禁止的应用在已经启动之后,若一段时间内(智能调度)没有使用到,就会被强制关闭。也就是传说中的杀后台。但正在运行前台服务的应用除外。

前台服务是 Android 开发中一个专业名词。对于普通用户来讲,最简单理解就是一个带有常驻通知的后台服务,最常见的例子是音乐播放器的通知栏控制按钮。所以即便不允许 QQ 音乐自启,它在后台放歌的时候也不会被强行中断。

Google 规定,凡是带有前台服务的应用系统将其视为前台应用,自然不会受到后台策略的限制。哪怕从最近任务列表中将其划掉,也不会终止。

注意: ① 前台服务所绑定的常驻通知,用户是可以将其关闭的,但是不影响服务的前台性。 ② 前台服务只有保持运行的特权,没有自动启动的特权。

最后,允许后台活动(也就是目录3:设置-应用程序-某个应用-电池-允许后台活动)并没有明确的定义,但实际实验中,这个选项与自启动开关完全同步。所以把这两个选项视为一个完全合理。

关联关系

  • 休眠:只有禁止自启的应用才能加入休眠,允许自启将自动取消休眠。
  • 优化电池使用量:关闭优化电池会自动允许自启(配合实现后台常驻),而调整自启不会影响优化电池。
  • 优化电池使用量:打开优化电池会自动关闭自启(配合实现后台限制),而调整自启不会影响优化电池。

休眠

一句话概括:休眠是最绝对、最疯狂、最无脑的后台限制方案。

前面说了,禁止自启与后台的应用依然可以短暂后台运行,需要等待系统智能调度来强制结束。而休眠则是彻底封杀(退出前台约1分钟干掉所有进程),与冰箱等第三方优化应用的效果类似。被休眠的应用相当于系统层面的禁用(添加到休眠列表后,打开 设置-应用程序 找到这个应用,上面会显示已禁用,下面多了个「启用」按钮,点击则从同步休眠列表里删除)。休眠的应用没有任何可能性在后台运行,唯一运行的办法就是用户手动打开它并保持前台。

再次强调,具有前台服务的应用视为前台应用,哪怕它界面已经被关掉看起来像个后台。

注意,休眠的应用有两种来源:自动休眠和手动添加。自动休眠规则可以在上述目录5(设置-常规管理-电池-用电管理-让未使用的应用程序进入休眠)进行设置。若是超过 X 天此应用没有被打开,则会被休眠。自动休眠的应用一旦打开则自动取消休眠,直到下次再度满足自动休眠条件。 而手动添加的应用则一直躺在列表里,每次用完都会被无情干掉。

关联关系

  • 自启:只有禁止自启的应用才能加入休眠,取消休眠不会自动允许自启。
  • 优化电池使用量:只有未休眠的应用才能设置是否优化电池。重新启用后是否优化电池保持休眠前不变。

和自启与后台限制的区别:

在应用切到后台后,若禁止自启与后台,则系统会在一段时间内将其结束。这个时间是不固定的,通常大于10分钟。 而休眠的应用在切到后台后会立即结束其所有进程,释放包括缓存在内的所有内存占用。通常在1分钟内完成。

优化电池使用量

这是 Android 原生功能,非国行专属,是限制最宽松的但也是最智能的一种。

此项限制较为复杂,针对不同的手机使用状态与应用适配等级有不同的影响,Android 开发者可以去开发者文档查看详情,普通用户不建议深入了解,因为这里面包含了大量的专有名词,容易造成误解。这里依然粗略地解释一下:

Android 原生具有低电耗模式应用待机模式

低电耗模式是手机全局的,如果①未在充电且②屏幕关闭且③设备一段时间内不活动,则会进入低电耗模式。此模式下系统会限制应用使用CPU,禁止访问网络,延时后台任务与唤醒定时器。系统会定时退出低电耗模式一小段时间解除上述限制,让应用完成累计的工作。解除限制的间隔会越来越长,直到用户①移动手机或②打开屏幕或③充电或④其他方式唤醒设备,此时立即退出低电耗模式,所有应用恢复正常工作。

应用待机模式是针对单个应用的,当用户①一段时间没与其交互且②未在充电且③没有前台进程、没有可见通知且④不是设备管理器等特殊应用,则进入应用待机模式。根据应用不活跃的时长,系统会执行不同程度的任务延时、网络限制等措施。

简单说,优化了电池使用量的应用会影响其通知推送,具体程度从延时到完全收不到不等。

这里忍不住再次疯狂吐槽大陆应用,FCM 统一推送已经解封了,但他们死不接入。FCM 机制和 IOS 类似,可以在上述所有情况下收到实时推送。

关联关系

  • 自启:关闭优化电池则自动允许自启(配合实现后台常驻)。(可以再次关闭自启,不会自动打开优化电池)
  • 自启:打开优化电池则自动禁止自启(配合实现后台限制)。(可以再次允许自启,不会自动关闭优化电池)
  • 休眠:只有未休眠的应用才能设置是否优化电池。重新启用后是否优化电池保持休眠前不变。

设置建议

了解了各个设置项的具体效果,以及他们的关联关系,大家就可以根据自己的需求来设置了。

科普扫盲

从「最近任务列表」中划掉应用,或者直接清空「最近任务列表」不会关掉任何后台,最近应用列表与后台活动没有关系。之所以划掉微信后重新打开,会再次显示地球启动画面,是因为微信的缓存被释放了。缓存不是后台,不会消耗任何电量,相反,缓存会节约CPU的使用,从而提高续航。因此,不要经常划掉最近任务列表,除非系统明显卡顿或者确定某一应用在较长时间内(大于30分钟)不会再次使用到。

对于普通用户

不过要是有小伙伴看完一脸懵逼的话,可以按照下面的建议与步骤进行设置:

  1. 对于想实时收到的通知的应用,例如微信 QQ 等,关闭优化电池使用量,同时也将自动允许自启与后台。
  2. 对于其他应用一律开启优化电池使用量,同时也将自动禁止自启与后台。
  3. 对于实时性要求不高,但是还需要有推送的应用,例如邮件,在开启优化电池后,手动允许自启与后台。
  4. 对于其他应用,保持现状即可(优化电池、禁止自启后台)
  5. 对于个别极度流氓,且希望严格控制的应用,例如淘宝,将其休眠。

对于 FCM 推送的应用

对于支持 FCM 推送且希望收到 FCM 渠道实时推送的应用:

  1. 开启电量优化。(也将自动禁止自启)
  2. 手动允许自启。(否则 FCM 可能无法唤醒应用,允许自启后后台活动依然会受到电量优化的制约)