Android UI优化小结

总结UI原理和高级的UI优化方式 不知道UI原理如何做UI优化? 本文内容分为三个部分,UI原理、LayoutInflater原理、UI优化,篇幅有点长,可以选择自己喜欢的章节进行阅读,每一个部分最后都有小结。 相信大家多多少少看过一些Activity启动源码分析的文章,也能大概说出Activity启动流程,例如这种回答: AMS负责管理系统所有Activity,所以应用startActivity 最终会通过Binder调用到AMS的startActivity方法,AMS启动一个Activity之前会做一些检查,例如权限、是否在清单文件注 阅读详情

前言

Android系统的极致UI性能是60帧每秒,所以每帧处理的时间不能超过16ms。这是Android官方给出的流畅运行定义。

我们来看一下,一帧需要处理多少数据。

我手头有个1920x1080的pad,60帧的情况下,一秒的像素量就是1920x1080x60。
设置个1920x1080的背景,

转换成内存

Bitmap.Config ARGB_4444:每个像素占四位,即A=4,R=4,G=4,B=4,那么一个像素点占4+4+4+4=16位 ---->1920x1080x60x16/8 = 237.3M

Bitmap.Config ARGB_8888:每个像素占四位,即A=8,R=8,G=8,B=8,那么一个像素点占8+8+8+8=32位 ---->1920x1080x60x32/8 = 474.6M

Bitmap.Config RGB_565:每个像素占四位,即R=5,G=6,B=5,没有透明度,那么一个像素点占5+6+5=16位 ---->1920x1080x60x16/8 = 237.3M

Bitmap.Config ALPHA_8:每个像素占四位,只有透明度,没有颜色。 ---->1920x1080x60x4/8 = 59.3M

看着都觉得多

 

简单分析

UI卡顿的原因主要是以下几类
1.UI线程有耗时或轻微耗时操作

2.Layout过于复杂

3.View过度绘制---单位时间内,动画执行次数太多,加重CPU GPU负担

4.View频繁measure layout,增加渲染次数

5.内存GC,阻塞渲染

6.冗余资源,渣渣逻辑-----加载执行慢

7.ANR


分析工具

针对1、2、4可以用hierarchyviewer.bat和lint过冗余
在SDK目录下..\adt-bundle-windows-x86_64-20140702\sdk\tools\hierarchyviewer.bat

针对3,可以用DDMS查看Heap或者adb shell dumpsys cpuinfo 或者adb shell top -m 1

针对5,可以用内存监控,leakCanary blockCanary或者DDMS里头的Allocation Tracker。主要是找一下内存抖动。工具是挺多的,还有腾讯的WeTest。


[译]Android UI 性能优化 本文来源于Google IO 2017上的视频 Android Performance: UI,翻译自Android官网 Slow rendering;个人觉得非常有价值,比如指出 对象分配、垃圾回收(GC)、线程调度以及Binder调用 是Android系统中常见的卡顿原因,更重要的是给出了定位和解决这些问题的方案;而非简单地告诉你避免对象分配,减少布局层级,减少过度绘制等苍白无力的内容。另外,Google开发团队在各个不同场合不厌其烦地提到了 Systrace用以解决App中不同维度的问题,这是一个远被 阅读详情

相关推荐

Android性能优化与实际案例小结

在近几年过往的 Android 开发经历中,性能优化是保障应用流畅运行、提升用户体验的核心环节,也是高级工程师面试的重点考察内容。下面我将从**UI 渲染优化、内存优化、启动优化、网络优化**四个核心维度,结合实际项目案例展开分析,在此做一些小结,供你参考,不足之处,欢迎交流指出

小羊子的技术专栏 265

android UI布局的性能优化小结

在LinearLayout中慎用layout_weight;减少布局的层次;去除不用的布局;去除不用或者是累赘的的父控件;使用compound drawables;使用include,merge,ViewStub 标签;背景的优化;

小刚的专栏 1282

Android 性能优化之界面优化

Android的性能优化是一个持续持续的过程,以发现问题、解决问题或者是组织Code Review为推动力去实施。性能优化涉及到的方面很多,比如启动优化、卡顿优化、内存优化、界面布局优化、稳定性优化、耗电优化、安装包大小优化等等。性能优化是每个开发者都需要关注的功课,本文从界面布局优化做一个总结。

小羊子的技术专栏 2909

Android 播放视频UI的功耗优化 && 动态增加view小结

背景:优化前播放视频的UI是直接用XML文件描述,这样确实方便调试和绘图。 但是如果不是动态添加surafaceview到activity的话,dumpsys sufaceFlinger会发现有一层activity的view一直存在。 但是如果我们是动态增加view到activity的话,播放视频的时候只会显示surfaceview,从而达到功耗优化的目的。 动态增加view的话,主

muxi@Achilles的专栏 1643

使用STM32微控制器实现光电传感器的接口和数据处理

本文将介绍如何使用STM32微控制器实现光电传感器的接口和数据处理的方案,包括硬件设计、引脚配置、数据采集、滤波和阈值判断等关键步骤,并给出相应的代码示例。本文将介绍如何使用STM32微控制器实现光电传感器的接口和数据处理的方案,包括硬件设计、引脚配置、数据采集、滤波和阈值判断等关键步骤,并给出相应的代码示例。在光电传感器的接口和数据处理的实现过程中,要关注系统的性能。在使用STM32微控制器实现光电传感器的接口和数据处理之前,需要设计一个合适的硬件平台。

weixin_66608063的博客 3201

PyGPT:桌面AI助手整合大模型与本地知识库,打造高效工作流

大语言模型(LLM)通过理解和生成自然语言,正深刻改变人机交互方式。其核心原理是基于海量数据训练的Transformer架构,能够根据上下文进行预测和生成。这一技术价值在于将强大的AI能力平民化,广泛应用于代码生成、文档分析、创意写作和智能问答等场景。通过API调用云端模型或本地部署开源模型,开发者可以构建个性化的AI应用。本文聚焦于PyGPT这一桌面AI助手,它巧妙地将ChatGPT、Claude、Gemini等主流大模型与LlamaIndex、Ollama等本地化工具整合,实现了聊天、文件分析、代码解释

weixin_28679635的博客 437

安卓之UI绘制优化

安卓之UI的绘制优化CPU 与 GPU工作流程1 结构图2 加载流程图60HZ由来及卡顿处理1 卡顿原因分析2 解决办法查看方法 : 开发者选项-》Profile GPU rendering/调试GPU过度绘制处理方案布局的优化(主要减少CPU工作量)1 常用工具2 优化注意小结 CPU 与 GPU工作流程 CPU 的任务繁多,做逻辑计算外,还要做内存管理、显示操作,因此在实际运算的时候性能会大打折扣,在没有 GPU 的时代,不能显示复杂的图形,其运算速度远跟不上今天复杂三维游戏的要求。即使 CPU的工作频

weixin_43607099的博客 415

SAP ABAP实战:用BAPI_PO_CREATE1创建采购订单时,如何巧妙处理PBXX和PB00条件类型?

本文深入探讨了在SAP ABAP开发中使用BAPI_PO_CREATE1创建采购订单时,如何有效处理PBXX和PB00条件类型的难题。通过分析外协加工订单的特殊需求,提供了从问题定位到解决方案的全流程方法,包括数据流向追踪、字段控制策略和增强实现方案,帮助开发者解决条件类型自动生成的业务痛点。

weixin_30614109的博客 824

Android 开发优化小结

目录 Android基本组件 UI与布局 进程、线程与消息通信 Android基本组件 当前的Activity的onPause方法执行完成之后才会执行下一个Activity的onCreate方法,所以在onPause方法中不适合做耗时较长的工作,这会影响页面之间的跳转效率。 使用Toast时,建议定义一个全局的Toast对象,这样可以避免连续显示Toast时不能取消上一次Toast消息的情况。 使用Adapter的时候,如果你使用了ViewHolder做缓存,在getView()的方法中无

qq_35381515的博客 2109

【物联网】基于LORA组网的远程环境监测系统设计(ThingsCloud云平台版)_资料编号34

实现一主多从的LORA组网远程通信,主机和两个从机都配备了STM32F103单片机与 LoRa 模块,主机作为中心设备及WIFI网关,负责接收和发送数据到远程物联网平台和手机APP,两个从机则负责采集数据并通过各自的 LoRa组网将数据发送给主机。

嵌入式阿齐Archie 1万+

模式分类识别 | TCN时间卷积神经网络多特征分类预测(Matlab完整程序)

模式分类识别 | TCN时间卷积神经网络多特征分类预测(Matlab完整程序)

前程算法屋的博客 748

[Android] UI 性能优化笔记

在 Android 开发过程中不免面临一个将一个应用做出来,再进一步做成一个牛逼的应用的过程,其中非常直观的一点就是应用UI的流畅度。 这里对一些性能相关的知识进行了小结~ 希望能够帮助你在实际项目中对 UI 性能有提升的作用

请成为会做图的工程师 1414

云计算 | 期末梳理(上)

2024云计算回忆版 && 复盘向梳理

知识库搭建ing 2231

Android UI卡顿面试知识小结

今天我们来学习下 Android 中 UI卡顿方面的知识,UI卡顿的原理、UI卡顿的原因分析、UI卡顿的优化。 一、UI卡顿的原理 1、Android系统每隔16ms发出VSYNC信号,触发对UI进行渲染; 2、View的绘制帧数每秒保持60fps最佳,这要求每帧的绘制时间不超过16ms(1000/60),如果安卓不能在16ms内完成界面的渲染,那么就会出现丢帧卡顿现象; 二、UI...

lingguiqin的博客 930

linux 内核OOM问题定位-SLAB_DEBUG

首先看slabinfo按的size排序查看 slub object,可以查看 space 总占用大小,及objects个数判断泄漏点 为kmalloc-128。那个泄露多看/sys/kernel/debug的slab/kmalloc*-的alloc-traces和free-traces。SLAB或者SLUB有一个用就可以,改menuconfig没有clean会覆盖之前的更改,现在看一下编译的过程。或者配置defconfig,配置完之后需要clean后再编译。1,配置menuconfig。

陌上花开缓缓归以的博客 899

【漏洞复现】永恒之蓝 MS17-010 远程溢出漏洞(CVE-2017-0143)

文章目录声明前言一、漏洞原理简述二、漏洞代码深层解析三、实验步骤四、漏洞补丁总结 声明 本篇文章仅用于技术研究与技术学习,切勿用于非授权下攻击行为,切记! 前言 Windows7 存在 MS17-010 永恒之蓝(远程溢出漏洞) ,该漏洞是方程式组织在其漏洞利用框架中一个针对SMB服务进行攻击的漏洞,该漏洞导致攻击者在目标系统上可以执行任意代码 一、漏洞原理简述 MS17-010漏洞出现在Windows SMB v1中的内核态函数 srv!SrvOs2FeaListToNt 在处理FEA(File Ex

李同學AI安全 9627

Android性能优化小结

学习笔记小结 一、关于UI优化  1.overdraw和多层布局嵌套不等同。多层布局嵌套不一定导致overdraw。  2.打开真机GPU测试,蓝色为可以接受的,一般导致Overdraw的原因是多层嵌套和背景颜色。  3.Hierarchy Viewer检测嵌套。XML中布局一般最好不要超过2层。  4.include的布局根布局最好用merge。  5.ViewStub延迟初始化。

qq_27429143的博客 630

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

android ui分析 - 今日头条UI主界面

Dump View Hierarchy for UI Automator上篇文章使用Hierarchy Viewer工具分析了今日头条UI的整体结构,由分析结果可以看到,主界面(也就是MainActivity)里边的逻辑是最复杂的,嵌套了好几层的内容,和新闻/资讯相关的所有内容都在这个Activity里边。其它的Activity职责相对来说比较简单(或者说清晰),即一个Activity就做一件事情(

pcsxk的专栏 5738

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Android UI渲染流程及优化

CPU和GPU CPU作为"中央处理器",除了哟啊负责逻辑运算外,还需要做内存管理,显示操作,因此随着各种复杂App的出现,其实际运算的性能会大打折扣。 设计原由: 为了提高图像显示效率以及显示复杂的图像,设计出了GPU 主要功能:为了帮助CPU分担图像显示 XML布局显示至屏幕的流程 FPS 12fps:画面帧率高于每秒约10-12帧时,眼睛会认为它是连贯的 24fps:有声电影拍摄一般为每...

朱豪凯的博客 870

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

安卓开发布局总结与UI界面交互功能实现

在学习安卓开发的过程中,UI界面交互功能的实现方法是一个重要的内容。通过实际案例的学习和练习,掌握了按钮点击、列表项点击、滑动操作以及菜单和对话框的实现方法

weixin_56358837的博客 891

android ui分析 - 今日头条UI整体结构

Hierarchy ViewerHierarchy Viewer经常被用来分析和优化UI布局,关于这方面有很多的文章,包括google官方的文档。 除了这些,它还可以帮助我们分析app的UI结构。这篇文章以”今日头条”为例,借助于Hierarchy Viewer简单分析一下该app的UI整体结构。今日头条UI整体结构先贴上我简单分析的结果,app版本为4.9.5 如何分析其实很简单,主要使用的是

pcsxk的专栏 2745

Android性能优化小结(十)

运行快,运行稳定、体积小,电量/流量节省,基本上可以从这四个方面确定一个APP是否是性能良好的APP,这四个方面对应于APP卡顿、内存泄漏/崩溃,代码质量和逻辑,安装包体积四个层面 参考 《Android性能优化最佳实践》 推荐 《Bitmap等相关优化小结》 《Andorid App性能优化的一些思考》 《Android性能优化系列之Bitmap优化》 《Android 内存泄漏总结》 一、...

Tenderness4的博客 423

activity 深度进阶_Android进阶篇:深度解析UI原理和高级的UI优化方式

不知道UI原理如何做UI优化?本文内容分为三个部分,UI原理、LayoutInflater原理、UI优化,篇幅有点长,可以选择自己喜欢的章节进行阅读,每一个部分最后都有小结。相信大家多多少少看过一些Activity启动源码分析的文章,也能大概说出Activity启动流程,例如这种回答:AMS负责管理系统所有Activity,所以应用startActivity 最终会通过Binder调用到AMS的s...

weixin_31183253的博客 417

安卓帧渲染数据获取方式小结

文章目录通过 onDraw() 获取帧数据 首先解释一下文章标题中的“帧渲染数据”。 “帧渲染数据”是指,完成渲染一帧的耗时。这是计算...

litefish的专栏 1639

Android中卡顿分析小结

在Android开发中,卡顿(Lag)是影响用户体验的核心问题之一。其本质是UI线程(主线程)无法在规定时间内(约16ms,对应60fps的刷新率)完成帧绘制任务,导致用户操作反馈延迟、界面刷新不流畅。以下从卡顿的核心原因、分析工具和优化方案三方面详细说明:卡顿的根源是主线程被阻塞或渲染流程耗时过长,具体可分为以下几类:主线程(UI线程)负责处理用户输入(如点击、滑动)、UI刷新(测量、布局、绘制)等核心任务,若被耗时操作占用,会直接导致帧处理延迟。常见场景包括:UI渲染流程(Measure → Layou

分享技术和日常 2658
上一篇: 设计模式【3】-对象创建型-单例模式
下一篇: Android UI优化之HierarchyViewer的使用
手艺人王学明
手艺人王学明 领域专家: 操作系统技术领域 领域专家: 操作系统技术领域
博客等级 码龄17年 441粉丝 185原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值