Android 界面的性能优化 —— 减少过度绘制

简介: 本文讲的是Android 界面的性能优化 —— 减少过度绘制,你有了一个很棒的灵感,并且把它制作成了一个应用程序发布到了网上。但是,现在你听到了来自用户的抱怨,例如这个应用程序运行起来很慢有卡顿的感觉并且太难使用。
本文讲的是Android 界面的性能优化 —— 减少过度绘制,

你有了一个很棒的灵感,并且把它制作成了一个应用程序发布到了网上。但是,现在你听到了来自用户的抱怨,例如这个应用程序运行起来很慢有卡顿的感觉并且太难使用。:disappointed_relieved:

有一个简单的解决方法是,你可以使用 GPU Overdraw 工具来改进应用程序的渲染时间。

什么是过度绘制?

过度绘制发生在每一次应用程序要求系统在某些界面上再绘制一些界面的时候。这个 Debug GPU Overdraw 工具可以在屏幕最上层叠加上一些颜色,它显示出一个像素点被重复绘制了多少次。

我怎么能启动这个 Debug GPU Overdraw 工具?

  1. 进入设备上的设置菜单
  2. 进入开发者选项
  3. 选择调试 GPU 过度绘制
  4. 选择显示过度绘制区域

你会注意到屏幕上的颜色有了变化 —— 不必惊慌。返回到你的应用程序,现在我们学习如何来优化我们的界面。

不同颜色代表了什么意思?

Screenshot_2016-02-01-11-08-40

以下是各种颜色的解释:

本色 —— 没有发生过度绘制 —— 屏幕上的像素点只被绘制了 1 次。

蓝色 —— 1 倍过度绘制 —— 屏幕上的像素点被绘制了 2 次。

绿色 —— 2 倍过度绘制 —— 屏幕上的像素点被绘制了 3 次。

粉色 —— 3 倍过度绘制 —— 屏幕上的像素点被绘制了 4 次。

红色 —— 4 倍过度绘制 —— 屏幕上的像素点被绘制了 5 次。

GPU Overdraw

你可以看看我的 Book Dash 应用程序,它在初始化的界面上做了很多过度绘制。

如何修正过度绘制的问题?

在上文的例子中,我移除了设定在 RelativeLayout 上的背景色,并且使用 theme 来绘制背景。

将以下代码:

<RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#FFFFFF">

替换成:

<RelativeLayout
     android:layout_width="match_parent"
     android:layout_height="match_parent">

修改代码后的界面得到了如下的结果:blush::

After removing the background colour.

就如你看到的,过度绘制的问题被最大程度地减少了。红色的过度绘制区域被大大地减少了。

这个界面还有继续优化的空间,现在大部分展现的已经是界面的真本色了,还有一些蓝色的过度绘制区域。有些过度绘制是不可避免的。

并不是所有的过度绘制都是由背景色造成的。其他问题也会导致过度绘制,例如,有非常复杂层次结构或者包含有太多视图的界面。

你应当把目标定在 最多只允许 2 倍过度绘制 (也就是只出现绿色过度绘制区域)

你也可以使用一些其他的工具来调试为什么发生了过度绘制,例如,Hierarchy Viewer 和 GL Tracer.

你是怎么来解决调试过度绘制时遇到的问题?你还有其他宝贵的经验分享给大家么?





原文发布时间为:2016年10月26日

本文来自云栖社区合作伙伴掘金,了解相关信息可以关注掘金网站。
相关实践学习
基于阿里云DeepGPU实例,用AI画唯美国风少女
本实验基于阿里云DeepGPU实例,使用aiacctorch加速stable-diffusion-webui,用AI画唯美国风少女,可提升性能至高至原性能的2.6倍。
目录
相关文章
|
21天前
|
缓存 监控 Android开发
安卓应用性能优化的实用策略
【4月更文挑战第2天】 在竞争激烈的应用市场中,一款应用的性能直接影响用户体验和市场表现。本文针对安卓平台,深入探讨了性能优化的关键要素,包括内存管理、代码效率、UI渲染和电池使用效率。通过分析常见的性能瓶颈,并提供针对性的解决策略,旨在帮助开发者构建更加流畅、高效的安卓应用。
|
3月前
|
Java 调度 数据库
Android 性能优化: 如何进行多线程编程以提高应用性能?
Android 性能优化: 如何进行多线程编程以提高应用性能?
47 0
|
6月前
|
SQL 人工智能 算法
Android性能优化之应用瘦身(APK瘦身)
Android性能优化之应用瘦身(APK瘦身)
|
15天前
|
监控 API Android开发
构建高效安卓应用:探究Android 12中的新特性与性能优化
【4月更文挑战第8天】 在本文中,我们将深入探讨Android 12版本引入的几项关键技术及其对安卓应用性能提升的影响。不同于通常的功能介绍,我们专注于实际应用场景下的性能调优实践,以及开发者如何利用这些新特性来提高应用的响应速度和用户体验。文章将通过分析内存管理、应用启动时间、以及新的API等方面,为读者提供具体的技术实现路径和代码示例。
|
30天前
|
缓存 前端开发 Android开发
构建高效Android应用:从设计原则到性能优化
随着移动设备成为我们日常生活不可或缺的一部分,开发一个流畅且响应迅速的Android应用变得至关重要。本文将探讨如何通过遵循Android设计原则和实施细致的性能优化策略来构建高效的Android应用程序。我们将深入分析应用架构的选择、内存管理的要点以及UI设计的优化,旨在为开发人员提供一套实用的指导方针,帮助他们提升应用的整体性能和用户体验。
|
1月前
|
监控 Java Android开发
构建高效Android应用:从内存管理到性能优化
【2月更文挑战第30天】 在移动开发领域,打造一个流畅且响应迅速的Android应用是每个开发者追求的目标。本文将深入探讨如何通过有效的内存管理和细致的性能调优来提升应用效率。我们将从分析内存泄露的根本原因出发,讨论垃圾回收机制,并探索多种内存优化策略。接着,文中将介绍多线程编程的最佳实践和UI渲染的关键技巧。最后,我们将通过一系列实用的性能测试工具和方法,帮助开发者监控、定位并解决性能瓶颈。这些技术的综合运用,将指导读者构建出更快速、更稳定、用户体验更佳的Android应用。
|
1月前
|
Java 定位技术 Android开发
安卓应用性能优化实践
【2月更文挑战第26天】在竞争激烈的应用市场中,一个高效流畅的安卓应用是吸引和留住用户的关键。本文将深入探讨安卓应用性能优化的多个方面,包括内存管理、多线程处理、UI渲染效率以及电池使用优化。通过实例分析和最佳实践的分享,旨在帮助开发者构建更快、更稳定、更节能的安卓应用。
|
1月前
|
设计模式 缓存 Android开发
深入理解Android应用性能优化
【2月更文挑战第18天】在移动开发领域,应用性能是用户体验的关键因素之一。特别是对于安卓设备而言,由于硬件配置的多样性,确保应用在不同设备上都能流畅运行是一项挑战。本文将探讨Android应用的性能优化策略,包括内存管理、UI渲染、多线程处理以及电池效率等方面。通过实例和最佳实践,我们将展示如何诊断性能瓶颈,并提供解决方案来改善应用响应速度和稳定性。
|
6月前
|
SQL 人工智能 移动开发
Android 遍历界面所有的View
本文讲述如何遍历获取页面中所有的view,并输出对应的id,textview文本内容,imageview实际大小及设置的图片大小。 可用于检测android应用中的大图。
|
2月前
|
Android开发 数据安全/隐私保护
【Android Studio】简单的QQ登录界面
【Android Studio】简单的QQ登录界面