Android Performance Patterns S01E02 - Understanding Overdraw

Overdraw:过度绘制是一个术语,用来描述组件在屏幕某个像素上面绘制大于一次。

例如,如果我们有一堆叠放的UI卡片,用户可见的上层卡片遮盖了下层卡片的大部分。这也意味着大量时间花费在绘制不可见的下层卡片。如果每次都花费大量时间,用以绘制不可见的部分,将会导致GPU性能严重浪费的问题。

Modern布局给了我们美观的设计,但是也给开发者带来了上述的问题。

为了最大限度提升App的性能,开发者需要最大限度减少Overdraw。

幸运的是,在Android设备上很容易查看APP Overdraw造成的影响:

进入开发者模式,然后打开Show GPU Overdraw。

打开之后,Android会在屏幕上用不同颜色标记Overdraw的情况。

原来颜色:无Overdraw

淡蓝色:1次Overdraw

淡绿色:2次Overdraw

淡红色:3次Overdraw

深红色:4次Overdraw

App应尽可能减少过度绘制,以使得App显示更多的蓝色色块,而不是红色色块。

在开发过程中,要注意避免不必要的Overdraw。例如,一个layout里的所有Activity都有背景色,并且所有的子元素也都有背景。另外需要注意避免Overdraw的有文本框、标题、背景、头像背景以及头像等。

时间: 2024-10-13 01:15:41

Android Performance Patterns S01E02 - Understanding Overdraw的相关文章

Android Performance Patterns S01E02 - Rendering performance

S01E02 Rendering performance 渲染性能问题 渲染性能问题是app开发的最常见问题. 系统每隔大约16ms(1/60秒)尝试绘制Activity,如果无法每隔16ms成功绘制出新的图,则会出现掉帧的现象.也就是说,APP每16ms要运行结束所有刷新屏幕的逻辑,屏幕才能达到每秒60帧. 如下图: 用户很容易察觉掉帧引起的卡顿问题,如拖动列表卡顿.输入法输入卡顿.引起卡顿的原因可能有多种,如: View结构的较大部分的重新绘制花费过多时间(CPU周期,CPU cycles)

Android性能优化系列——Understanding Overdraw

过度绘制(Overdraw)是指在一帧的时间内像素被绘制了多次: 理论上一个像素每次只绘制一次是最优的,但是由于层叠的布局导致一些像素会被多次绘制,而每次绘制都会对应到CPU的一组绘图命令和GPU的一些操作,所以对重叠不可见元素的重复绘制会产生额外的计算,需要尽量减少Overdraw的发生. Android系统提供了测量Overdraw的选项,在开发者选项-调试GPU过度绘制(Show GPU Overdraw),打开选项就可以看到当前页面Overdraw的状态. 根据overdraw的次数会显

Android Performance Patterns S01

S01E02 Rendering performance 渲染性能问题 渲染性能问题是app开发的最常见问题. 系统每隔大约16ms(1/60秒)尝试绘制Activity,如果无法每隔16ms成功绘制出新的图,则会出现掉帧的现象.也就是说,APP每16ms要运行结束所有刷新屏幕的逻辑,屏幕才能达到每秒60帧. 如下图: 用户很容易察觉掉帧引起的卡顿问题,如拖动列表卡顿.输入法输入卡顿.引起卡顿的原因可能有多种,如: View结构的较大部分的重新绘制花费过多时间(CPU周期,CPU cycles)

关于youtube上Android Performance Patterns的总结(部分)

1.熟悉android studio关于Logcat,Memory,CPU,GPU,Network分析窗口的使用.一旦你配置的内存突然下降,那么应该是GC在发挥作用.这些垃圾收集活动通常不会太大影响性能,但是短时间内频繁的出现,会迅速消耗帧时间,还是会导致性能问题的. 2.内存泄露:指的是应用不再使用的对象,但是垃圾收集没有把它们辨认出来.结果是它们一直留在你的内存里. android运行环境中的内存堆: android runtime内存堆被有效的划分为不同的区块,根据配置的类型,还根据系统为

Android Performance Patterns S01E03 - Why 60fps?

在注重App性能的领域,60fps和16ms(毫秒)是经常提及的概念.但是,为什么数字是60和16呢? 这些技术细节是与硬件相关的,——与人眼有关. 人眼与照相机的工作原理不同,不会发送现实世界的快照图片至人脑,供人来识别现实世界.大脑不断地处理眼睛发送给它的视觉信号,所以对于我们大脑来说,并没有帧或快照的概念,我们对运动的概念受到静止帧的影响很大.当静止图像的轮换显示足够快时,我们可以成功地骗过人脑,让其误感知到并未存在的运动. 重要的是,我们切换静止图像的速度,对我们感知的运动的流畅度有巨大

【转】 Android Performance Case Study(安卓绘图性能案例研究)

注:这篇文章是Google员工Roman Guy在其博客上发表的,主要研究了影响安卓绘图性能的一些原因,并讲解了怎样使用Android自带的测试工具来验证性能. Android Performance Case Study by Romain Guywww.curious-creature.org Falcon Pro I recently installed Falcon Pro, a new Twitter client, on my Nexus 4. I really enjoy usin

Android Design Patterns

出版时间:2013 下载地址:百度网盘 内容简介: Master the challenges of Android user interface development with these sample patterns With Android 4, Google brings the full power of its Android OS to both smartphone and tablet computing. Designing effective user interfac

android Performance 性能提升

1. 经常变动的字符串要用 StringBuilder,然后每次变动用 append 方法.而不应该每次创建新的 String. 2. 使用 static final 变量. 3. It's reasonable to follow common object-oriented programming practices and have getters and setters in the public interface, but within a class you should alwa

[LeetCode] Android Unlock Patterns 安卓解锁模式

Given an Android 3x3 key lock screen and two integers m and n, where 1 ≤ m ≤ n ≤ 9, count the total number of unlock patterns of the Android lock screen, which consist of minimum of m keys and maximum n keys. Rules for a valid pattern: Each pattern m