Android 60FPS的理解

Android为什么卡顿系统原理分析 2015年伊始,Google发布了关于Android性能优化典范的专题,一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App。课程专题不仅仅介绍了Android系统中有关性能问题的底层工作原理,同时也介绍了如何通过工具来找出性能问题以及提升性能的建议。主要从三个方面展开,Android的渲染机制,内存与GC,电量优化。下面是对这些问题和建议的总结梳理。 **大多数用户 阅读详情

我们先来理一下基本的概念:

  1. 60 fps 的意思是说,画面每秒更新60次
  2. 这60次更新,是要均匀更新的,不是说一会快,一会慢,那样视觉上也会觉得不流畅
  3. 每秒60次,也就是 1/60 ~= 16.67 ms 要更新一次

在理解了上面的基本概念之后,我们再回到 Android 这边,为何 Android 现在的渲染机制,是使用 60 fps 作为标准呢?这主要和屏幕的刷新率有关。

基本概念

  1. 我们前面说的 60 fps,是针对软件的
  2. 这里说的屏幕的刷新率,是针对硬件的,现在大部分手机屏幕的刷新率,都维持在60 HZ,移动设备上一般使用60HZ,是因为移动设备对于功耗的要求更高,提高手机屏幕的刷新率,对于手机来说,逻辑功耗会随着频率的增加而线性增大,同时更高的刷新率,意味着更短的TFT数据写入时间,对屏幕设计来说难度更大。
  3. 屏幕刷新率 60 HZ 只能说够用,在目前的情况下是最优解,但是未来肯定是高刷新率屏幕的天下,个人觉得主要依赖下面几点的突破:
    1. 电池技术
    2. 软件技术
    3. 硬件能力

综上,目前的情况下, Android 的渲染机制是 16.67 ms 绘制一次, 60hz 的屏幕也是 16.67 ms 刷新一次,所以大家见到的 Android 手机,基本都是这个配置,目前阶段下的最优解。

效果提升

如果要提升,那么软件和硬件需要一起提升,光提升其中一个,是基本没有效果的,比如你屏幕刷新率是 75 hz,软件是 60 fps,每秒软件渲染60次,你刷新 75 次,是没有啥效果的,除了重复帧率费电;同样,如果你屏幕刷新率是 30 hz,软件是 60 fps,那么软件每秒绘制的60次有一半是没有显示就被抛弃了的。

如果你想体验120hz 刷新率的屏幕,建议你试试 ipad pro ,用过之后你会觉得,60 hz 的屏幕确实有改善的空间。

站在Google角度看渲染机制,从Android渲染体系设计到Flutter渲染体系设计_android渲染引擎 google在设计考量中去中和这两个硬件的性能速度,采取的是将两者的绘制速度与频率控制在一定的范围内,也就是我们常提到的60FPS这个阈值上,所以他需要对于屏幕的刷新评率与当前的APP制图速度进行控制,所以他设计了surfaceflinger对于刷新率进行控制,在APP的绘制流程中采用了Choreographer对于制图速度进行控制。屏幕是一组硬件,这个组件需要展示的数据实际上是一组图形数据,也就是屏幕的数据诉求其实是一组bitmap数据。一直都是绕不开的话题,不管是工作中、还是面试中。 阅读详情

相关推荐

UnityProfiler中的渲染性能分析_2024-07-22_23-54-31.Tex

在Unity中,渲染管线(Rendering Pipeline)是游戏引擎处理场景并将其绘制到屏幕上的过程。这个过程包括多个阶段,从场景的构建、光照计算、着色器执行到最终的像素输出。理解渲染管线对于优化游戏性能至关重要,因为它直接影响到游戏的视觉效果和运行效率。

924

关于渲染帧率(FPS)的问题

先列举几个关于渲染帧率的文章: 1. http://ruinerlee.blog.163.com/blog/static/215611167201292990203/ 2. http://blog.codingnow.com/2008/04/fps.html 3. http://blog.youkuaiyun.com/strongcoding/article/details/6252313#include

KingW 1万+

Systrace系列3 —— Why 60 fps ?

本文解释一下为何大家总是强调 60 fps。为何我们讲到流畅度,要首先说 60 帧。在理解了上面的基本概念之后,我们再回到 Android 这边,为何 Android 现在的渲染机制,是使用 60 fps 作为标准呢?这主要和屏幕的刷新率有关。

tectrol的专栏 740

DrawCall

1、定义:每次引擎准备数据并通知GPU的过程称为一次Draw Call,我们关心每帧的DrawCall次数 2、Unity生成一帧画面的处理过程:       首先,经过简单的可见性测试,确定摄像机可以看到的物体       然后,把这些物体的顶点(包括本地位置、法线、UV等),索引(顶点如何组成三角形),变换(就是物体的位置、旋转、缩放、以及摄像机位置等),相关光源,纹理,渲染方式(由材质

加油小亮的博客 1068

别再让OCV拖慢你的芯片!手把手教你用set_timing_derate优化STA时序(附CPPR实战)

本文深入探讨了芯片设计中OCV(On-Chip Variation)对时序分析的影响,并提供了使用`set_timing_derate`优化STA时序的实战指南。通过分阶段derate设置和CPPR技术,有效减少时序违例,提升芯片性能。文章结合TSMC 7nm工艺案例,详细解析了OCV建模与优化策略,助力工程师实现时序收敛。

weixin_42525005的博客 305

【HALCON工业视觉应用探索】02. C# + Halcon铸件毛刺机器人打磨引导:点云处理从实验室到工业现场的全流程落地

摘要:铸件毛刺的自动化打磨是机械制造领域的重要难题,其随机性(高度0.1-3mm)和复杂工况导致人工打磨效率低(3分钟/件)、工伤率高。本文基于Halcon 24.11与.NET 6,构建了一套点云处理方案:通过线激光扫描仪获取三维点云,经预处理、毛刺检测、路径规划三大模块,引导机器人完成打磨。虚拟实验测试显示,对高度>1mm的毛刺检出率达100%,定位误差±0.08mm,但工业现场受油污、粉尘影响,性能降至检出率68-75%、处理时间>45秒。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1128

解析浏览器渲染的“一帧”——事件循环、帧动画、空闲回调

目录概述eventLoop一帧可能执行多个taskrequestAnimationFramerequestIdleCallback掉帧与时间切片参考资料 概述 一般浏览器的刷新率为60HZ,即1秒钟刷新60次。1000ms / 60hz = 16.6 ,大概每过16.6ms浏览器会渲染一帧画面。 在这段时间内,浏览器大体会做两件事:task与render。 task被称为宏任务,包括 setTimeout,setInterval,setImmediate,postMessage,requestAnimati

cicistream 4717

在 SAP ABAP 里可靠地对接 FTP 服务器:从连接、命令到传输与排错的完整实战

本文详细介绍了在SAP ABAP中实现FTP文件交换的完整技术方案。文章首先解析了FTP协议的双连接特性(控制连接与数据连接),强调保持控制连接的重要性。随后详细说明了ABAP中FTP操作的四步标准流程:建立连接(包含HTTP_SCRAMBLE加密)、执行命令、断开连接和关闭RFC通道。文章提供了实战案例代码,演示如何将FTP文件复制到应用服务器再读取进内表处理,特别指出后台作业与前台操作的关键差异。最后总结了常见错误排查要点,包括连接模型、路径设置和资源释放等问题。全文通过SAP标准函数模块的调用顺序、典

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 309

浅谈Android的屏幕刷新

我们做安卓的都基本听说过16.6ms的手机刷新机制,那么这个16.6ms是怎么来的呢?其实是因为当时安卓主流手机的屏幕刷新屏幕是60HZ,60Hz代表1s中,手机的屏幕会刷新60次,平均每一次刷新时间是 1s/60 = 16.66ms,但是到2020年,市场上出现了90HZ和120HZ的手机了,所以说16.6ms只是大部分手机的一帧的刷新时间。 ...

xueyoubangbang的博客 1114

【推荐100个unity插件】unity实现交互式火焰 —— Ignis

Ignis是一款Unity互动式消防系统插件,可轻松将物体转换为可燃物。支持固体、植被、蒙皮网格和地形树木等多种对象类型,提供火焰蔓延、熄灭等效果。安装需通过Unity Package Manager添加Visual Effects Graph,并按照指引转换目标物体材质。使用盒型碰撞体或网格计算燃烧区域,可自定义火焰参数和视觉效果。内置多种转换选项,如Flammable Vegetation、Flammable Skinned Mesh等,适用于不同场景需求。注意使用前需备份材质和地形数据,并提供性能优化

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2240

音视频开发基础(1):模拟视频技术简介

模拟视频技术是指用模拟技术对动态影像进行捕捉、记来、处理、存储、传输、复现的技术.模拟视频技术的发明、发展与模拟电视系统的发展密不可分.下面将通过模拟电视系统来介绍模拟视频技术中的基本概念. 首先,人的视觉系统的特征为电视等視稿系铳的发明、发展提供了理论依据.光线通过角膜、腫孔、晶状体的折射光线.透过玻璃体到达视网展.视网膜上分布着光感受器,光感受器在光线的剌激下...

琅嬛福地 1493

Ticker性能优化秘籍:如何在100+动画中保持60FPS

Ticker是一款Android文本视图控件,通过滚动文本变化动画为应用带来生动的视觉体验。对于开发者而言,在实现流畅动画效果的同时保持60FPS的稳定帧率是一项挑战。本文将分享Ticker控件的核心性能优化策略,帮助开发者在处理大量动画时依然保持界面流畅。 ## 1. 理解Android渲染机制与60FPS目标 Android系统的屏幕刷新率通常为60Hz,这意味着应用需要在每16ms内完成

gitblog_01199的博客 938

Android系统开发面试指南:系统Launcher岗位解析

本文针对上海礼聪Android系统开发岗位(侧重系统Launcher、充电/电池/USB底层开发)提供面试指南。内容涵盖应用开发(启动流程优化)、系统底层(充电状态机、USBOTG)、编程能力(线程安全LRU实现)、问题排查(ANR分析)及沟通协作等核心考点。通过5类典型问题及技术深度解析,帮助候选人系统准备,重点考察Framework源码理解、系统调试能力和工程思维。建议结合PowerManagerService等模块源码和systrace工具进行实践准备,同时注重技术表达与协作能力的展现。

郑伟强dev的专栏 935

Android性能优化典范(一)

小编这些年深知大多数初中级Android工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人。

2401_85493350的博客 1142

UNet改进(12):融合小波变换与注意力机制的图像分割新方法

本文提出了一种改进的WaveletAttentionUNet架构,通过结合小波变换和注意力机制来增强传统UNet的多尺度特征提取能力。该网络使用分组卷积模拟小波分解,将输入通道扩展为4个子带(LL、LH、HL、HH),并通过通道注意力机制自适应加权各子带特征。网络保留了UNet的编码器-解码器结构,在关键位置集成了WaveletAttention模块。实验证明该方法在医学图像分割等任务中能更好地保持边缘细节和复杂纹理特征,同时保持计算效率。

2501_91516851的博客 759

【AFAC2026金融智能-赛题四】我做了一个疯狂的决定,把Embedding和Reranker全删了

本文介绍了AFAC2026金融智能挑战赛赛道四的解题思路,核心是在500万token的严格限制下实现金融长文本的高效问答。作者通过四步流水线(规划、BM25检索、记忆压缩、LLM推理)优化流程,重点创新在于: 采用零API调用的纯BM25检索,配合多路查询、封面页加权和页面邻接扩展等策略 设计高效的检索算法,从问题中提取专有名词并构建多路查询组合 深入理解评分公式,平衡准确率和token消耗,最终在准确率提升的同时将token消耗从数百万降至百万级 这些创新使方案在严格限制下实现了性能突破,展示了在资源受限

227

Android 性能优化

1.Android渲染知识 ①绘制原理 Android系统要求每一帧都要在16ms内绘制完成,平滑的完成一帧意味着任何特殊的帧需要执行所有的渲染代码(包括framework发送给GPU和CPU绘制到缓冲区的命令)都要在16ms内完成,保持流畅的体验。这个速度允许系统在动画和输入事件的过程中以约 60 帧每秒( 1秒 / 0.016帧每秒 = 62.5帧/秒 )的平滑帧率来渲染。 如果应用没有在16ms内完成这一帧的绘制,假设花了24ms来绘制这一帧,那么就会出现掉帧的情况。 系统准备将新的一

zenmela2011的专栏 943

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

android测试工具之systrace

测试准备 Systrace工具特别适合用来分析UI的性能。 理论基础:在开发应用时,通常使用60fps的帧率来检测交互是否流畅,及16.66ms/帧 首先确认一点,android studio集成了所有Android SDK下的工具。涉及android SDK的工具可以直接在android studio中安装使用。Android SDK 另外新的版本android studio取消了sys...

louniuous的博客 869

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Android app优化之导致app 卡顿慢的直接原因

总结一下,这里是介绍了导致我们app卡顿慢的直接原因,也是底层原因,至于别的原因例如内存泄漏,耗时任务在主线程这些问题都是先影响了Android渲染机制。然后才会出现卡顿慢现象的,准确说是影响到渲染机制cup相关部分导致延后运行。知道了这个原因后,优化的具体措施就有了。

Android 小生的博客 2万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

android动画帧率_Android流畅度之帧率

背景:app改版,人为感受卡顿,需要客观数据支撑观点。故,搜索各种性能指标,并理解之。(这是一篇摘要文......)首先,明确人为感受的性能不好属于下面哪种:1. 响应时间,界面跳转后响应时间;2. 流畅度,界面操作时或动画展示的效果;而流畅度的衡量指标又有几种:1. 帧率fps(Frames Per Second,每秒钟填充图像的帧率)2. 丢帧SF(Skipped frame)3. 流畅度SM...

weixin_39931146的博客 526

学习:Android性能优化典范

android性能优化 创建更快更优秀的android应用 渲染机制、内存与GC、电量优化 0)render performance 大多数用户所感知的卡顿问题最重要的根源都是因为渲染性能 Android系统无法及时完成复杂界面渲染操作 Android系统每隔16ms发出VSYNC信号,触发UI渲染 只有每次渲染成功,才能够达到流畅画面所需要的60fps的帧率,这也就意味着程序的大多数操作都必须在...

ZPCrobot的博客 427

Android性能优化典范

[转载]Android性能优化典范 JAN 17TH, 2015|COMMENTS 2015年伊始,Google发布了关于Android性能优化典范的专题,一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App。课程专题不仅仅介绍了Android系统中有关性能问题的底层工作原理,同时也介绍了如何通过工具来找出性能问题以及提升性能的建议。主要从三个方...

aion123123的博客 105

Systrace 学习笔记

和你一起终身学习,这里是程序员Android经典好文推荐,通过阅读本文,您将收获以下知识点:一、Systrace 简介二、Systrace 预备知识三、Why 60 fps四、System...

程序员Android 1686
上一篇: Android APP 卡顿问题分析及解决方案
下一篇: adb shell dumpsys gfxinfo 包名 数据分析
网络卷毛
博客等级 码龄14年 13粉丝 129原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值