Skip to content

uwuBackGroundManager ​

English | 简体中文

uwuBackGroundManager 按应用管理后台行为。它可以冻结空闲应用,也可以提高需要持续工作的应用的后台保留级别。

应用模式 ​

  • 默认:不添加 uwuAOSP 策略,使用 Android 原生后台管理。
  • 墓碑模式:应用空闲后冻结进程,保留内存状态并停止 CPU 执行。
  • Full:不冻结应用,将 OOM 优先级限制在“可感知应用”级别,并加入 Device Idle 白名单。

策略按用户和包名保存在 Settings.Secure。system_server 监听配置变化,并把模式应用到同一 UID 下的进程。

墓碑模式会跟踪可见 Activity、前台服务、广播、正在执行的服务、Instrumentation、音频播放与录制、定位、VPN、Binder 活动和 AOSP freezer 豁免。受保护状态结束后,符合条件的应用会重新进入冻结队列。Binder 请求到达时,系统先解冻整个 UID,处理完成并再次空闲后再冻结,而不是按 AOSP 默认路径终止冻结进程。

Full 模式减少进程回收和 Doze 限制,但不能保证应用永远存活。强行停止、崩溃、主动退出和严重内存压力仍然可以结束进程。

冻结后端 ​

设置页提供自动、CGroup1、CGroup2 和混合后端。系统读取 cgroup 挂载布局和 freezer 能力:

  • 自动根据设备实际布局选择可用后端。
  • 不受当前内核支持的手动选项会被禁用。
  • 手动选择失效或布局改变时,framework 会回退到当前可用后端;没有可用 freezer 时不会执行墓碑冻结。

墓碑模式还要求 Binder 驱动支持 BINDER_FREEZE、BINDER_GET_FROZEN_INFO 和冻结事务跟踪。只定义 ioctl 编号而没有驱动实现不够。Full 模式不需要这些冻结接口。

最近任务 ​

“忽略启动器任务卡移除”只对墓碑和 Full 应用生效。从最近任务划掉卡片后,卡片会消失,但任务和进程可继续保留。强行停止仍会结束应用。

诊断日志 ​

设置页可以导出后台管理日志。日志使用 [INFO]、[WARN] 和 [ERROR] 标注,包含构建信息、应用策略、请求与实际冻结后端、cgroup 控制器和挂载、Binder 节点、内核 freezer 状态及 framework 事件。导出只读取本机状态,不会上传文件。

内核要求 ​

  • CGroup1 需要可写的 freezer controller。
  • CGroup2 需要可写的 cgroup.freeze。
  • Android Binder 驱动需要与用户空间一致的冻结 UAPI。
  • Android 用户空间 freezer 必须启用并可访问对应 cgroup 层级。

该功能受 Cirno 启发。