Andriod知识图谱|青训营笔记

120 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第4天

青训营的课程很有价值,他的价值在于授之以渔,课程的分享思路非常值得学习。

Why? What? How?

一、为什么做性能优化

二、什么是性能优化

1.有哪些优化方向? 快:更快响应;

稳:运行更加稳定;

省:更加节约功耗

2.我们应该优化什么? (1)流畅性优化

了解Android的线程结构,对界面刷新进行优化(UI drawing).

通常做法是耗时线程不写入主线程,Android中常用子线程。

(2)资源优化

软硬件资源、功耗、存储、流量、系统参数...... 最常用的是存储和功耗。

(3)稳定性优化

不稳定通常分为两种情况:程序崩溃和程序请求超时。

(4)系统级的优化

移动操作系统和硬件厂商的性能优化。

3.性能优化工具

工具名称工具作用
GPU呈现模式流畅性问题
LayerTool布局问题
CPU profile初级性能归因
TraceView中级性能归因
Systrace高级性能归因
Battery Historian功耗问题

三、如何做性能优化

1.分析耗时成因

常见原因
CPU time循环,反射,序列化和反序列化
IO waitIO操作,等待IO返回结果
IPCBinder 调用耗时
Lock Wait主线程是等锁状态,等待其他线程或自己超时唤起
CPU Schedule主线程是可执行状态,但是获取不到CPU时间片

主要原因类型:主线程优化、运行时优化、后台线程优化

2.渲染分析

常见优化的举例

①UI构建 XML文件解析:IO Load

Tag Name获取Class : Java reflect

创建子View生成View Tree

② 数据绑定

数据请求-》解析-》适配

更新UI:setText

③ View显示

measure、Layout、draw

SurfaceFlinger

HardwareCompose