当前位置: 首页 > news >正文

手机冻结技术发展时间轴

手机冻结技术发展时间轴

苹果为啥那么领先呢?

0

厂商

启动时间

技术方案

特点

苹果

2010 (iOS 4)

墓碑机制

冻结进程状态并压缩内存,保留应用快照,恢复速度快,iOS中各种资源上面的管控更精细化,所以整体来说性能和功耗还不错。

华为

2013

cgroups freezer

通过 /dev/frz挂载 cgroup 实现冻结,拦截 Binder 通信避免阻塞 

OPPO

2013

Linux 信号(SIGSTOP/CONT)

早期用信号 18/19 控制进程,后转向 cgroups

小米

2014

cgroups freezer

集成于 MIUI 系统,支持动态调整冻结阈值

魅族

2015

Linux 信号(SIGSTOP/CONT)

Pro 5 机型首用,针对 Service/Broadcast 优化,后转向 cgroups

一加

2015

cgroups freezer

与 OxygenOS 深度整合,支持后台应用分级冻结

vivo

2017

cgroups freezer

通过 Funtouch OS 实现智能冻结策略,侧重省电

TCL

2019

cgroups freezer

将进程迁移至冻结组,系统给进程添加冻结伪信号,当进程回到用户空间时,处理冻结伪信号进入冻结状态

AOSP

2020

cgroups freezer

Android 11 首次引入

cgroups freezer原理:

通过内核的 freezer子系统冻结进程组,无感知暂停 CPU 调度,保留内存状态

优势:避免信号拦截问题,支持层次化冻结(父 cgroup 冻结时子 cgroup 同步冻结)。

Linux 信号原理:

发送 SIGSTOP(19)冻结进程,

SIGCONT(18)恢复,依赖进程信号处理逻辑

局限:易被应用捕获或忽略,兼容性较差。

0

Android方案主流使用cgroups方案,比较成熟。而不是linux signal ,linux signal 会和进程trace、debug等冲突。

AOSP原生冻结方案

cgroup 最初由 Google 工程师 Paul Menage 和 Rohit Seth 在 2006 年提出,是一种细粒度资源控制的Linux内核机制。于 2007 年合并到 Linux 内核主线中。然而 Google 原生系统直到 Android 11 或更高版本上才支持 CACHE 应用的 CPU 冻结功能。当应用切换到后台并且没有其他活动时,系统会在一定时间内通过状态判断,将进程 ID 迁移到冻结的 cgroup 节点上,实现冻结 CACHE 应用。这项功能可以减少活跃缓存应用在后台存在时所消耗的 CPU 资源,从而达到节电的目的。当应用再次切换到前台时,系统会将该应用的进程解冻,以实现快速启动。

Android 原生冻结方案版本演进对比表

Google和苹果的时间差异感觉有10年了

0

在中国,app连进入background的adj都不怎么愿意,各种app的保活提高优先级黑科技的使用,让Android生态全球最不和谐,应用会进入 CACHED_APP_MIN_ADJ的状态比较难,换句话说但凡应用后台收发广播或service行为立刻就变成非cache进程了,且如果冻结即时通讯应用,由于没有消息推送的解冻机制,会导致被冻结即时通讯应用消息接收不到。

版本

默认状态

冻结延迟

核心改进

技术实现

Android 11(2020年)

默认关闭

10 分钟

• 初版功能引入,基于 cgroup freezer• 支持 adj ≥ 900的缓存应用冻结

• 通过 /sys/fs/cgroup///cgroup.freeze写入 1/0 控制冻结

Android 12(2021年)

默认开启

10 分钟

• 稳定性优化• 修复冻结唤醒问题

• 沿用 cgroup v1,优化 Binder 兼容性

Android 13(2022年)

默认开启

10 分钟

• Binder 驱动支持冻结状态• 避免跨进程通信阻塞,优化大量的ANR问题

• 新增 freezeBinder()接口,对进程的 binder 先进行冻结,这一步禁掉该进程对同步binder请求的接收和处理,以及对异步binder请求的处理,因为之前如果随意的冻结应用,会导致一些应用后台的跨进程行为异常,例如在binder通信期间。

Android 14(2023年)

默认开启

0-10 秒

• 延迟大幅缩短• 联动内存压缩(zRAM)• 优化广播合并机制

Android 14还针对广播进行了优化。为了配合应用的冻结机制,系统调整了应用在进入缓存状态后接收context-registered广播的方式。这些优化使得Android 14能够进一步减少应用的冷启动时间。在8GB设备上,App的冷启动时间减少了20%,而在12GB设备上更是减少了30%以上,为用户带来了更快的启动速度。同时,Android 14还对ART编译器进行了优化,使得代码大小在不影响性能的前提下平均减少了9.3%,从而有效地减少了内存占用。

Android 15(2024年)

默认开启

0-10 秒

•  cgroup v2 + AI 预测• 异步 Binder 队列• 与内存压缩深度联动

• 废弃 enableFreezer,完全集成至 CachedAppOptimizer

Android 16(2025年)

默认开启

0-10 秒

新增普通模式Cache进程冻结激进模式Home进程冻结(默认关闭)

Android 16 冻结机制整体没有太多的变化,主要是提出一个激进模式(默认关闭)回收adj 600以上的进程,从侧面也说明Google也发觉冻结cache进程的效果不是很大。冻的应用不够多也很容易被频繁解冻。但是趋势没有变化,AOSP冻结是朝着我们国内厂商的冻结策略发展,即冻更多应用,冻更久的趋势。

后台冻结方案好不好用,关键看app退到后台能多快进入冻结,能冻结多久,能冻结多少进程。AOSP也是每年持续优化改进。

http://www.dtcms.com/a/353413.html

相关文章:

  • Flutter项目详解
  • 深度学习实战117-各种大模型(Qwen,MathGPT,Deepseek等)解高考数学题的应用,介绍架构原理
  • C++工程实战入门笔记6-函数(三)关于base16编码的原理和函数模块化实战
  • LINUX --- 网络编程(二)
  • OpenAi在中国拿下“GPT”商标初审!
  • October 2019 Twice SQL Injection
  • Qt图片上传系统的设计与实现:从客户端到服务器的完整方案
  • 对比视频处理单元(VPU)、图形处理器(GPU)与中央处理器(CPU)
  • 多模态模型如何处理和理解图片
  • PPT处理控件Aspose.Slides教程:在.NET中开发SVG到EMF的转换器
  • STM32学习日记
  • 替身演员的艺术:pytest-mock 从入门到飙戏
  • Java基础 8.27
  • 如何使用windows实现与iphone的隔空投送(AirDrop)
  • 【Docker基础】Docker-compose数据持久化与卷管理:深入解析docker volume命令集
  • 【重学MySQL】八十九、窗口函数的分类和使用
  • Mysql杂志(三)
  • 【46页PPT】公司数字化转型规划与实践(附下载方式)
  • 学习Python中Selenium模块的基本用法(7:元素操作-1)
  • 应变片与分布式光纤传感:核心差异与选型指南
  • 极海发布APM32F425/427系列高性能MCU:助力工业应用升级
  • laravel学习并连接mysql数据库
  • Linux 软件编程(十二)网络编程:TCP 并发服务器构建与 IO 多路复用
  • redis---set详解
  • Tortoisegit配置ssh教程
  • Vue3 新特性 defineModel 全面解析:让 v-model 写法更优雅
  • 项目智能家居---OrangePi全志H616
  • GitHub 宕机自救指南:保障开发工作连续性
  • 蓝桥杯算法之基础知识(3)——Python的idle的快捷键设置(idle改键)
  • 信任,AI+或人机环境系统智能的纽带