Android性能优化的方方面面

版权声明:本文出自门心叼龙的博客,转载请注明出处。 https://blog.csdn.net/geduo_83/article/details/86644072

目录

1.绘制优化
    1.1 绘制原理
    1.2 卡顿原因
    1.3 卡顿检测工具
        1.3.1 TraceView
        1.3.2 SysTrace
        1.3.3 HierarchyViewer
        1.3.4 Profile GPU Rendering
        1.3.5 AndroidLint
    1.4 第三方工具
    1.5 启动优化
        1.5.1 UI优化
        1.5.2 启动逻辑优化
2.内存优化
    2.1 内存检测工具
    2.2 内存抖动
        2.2.1 概念
        2.2.2 表现
    2.3 数据类型
    2.4 图片优化
3.存储优化
4.稳定性优化
    4.1 代码审查
    4.2 Crash监控
    4.3 提高进程存活率
5.耗电优化
    5.1 检测工具
    5.2 耗电模块
    5.3 优化
    5.4 Job Scheduler
6.安装包优化
    6.1 资源优化
    6.2 代码优化
    6.3 代码压缩
    6.4 代码混淆
    6.5 图片优化
    6.6 ProGuard
    6.7 Android Lint

 

1.绘制优化

1.1 绘制原理

FPS

1.2 卡顿原因

  • 绘制一帧时间太长
  • UI线程太忙了,丢帧了

1.3 卡顿检测工具

1.3.1 TraceView

  • 概念:方法调用关系、调用时长追踪,已经过时
  • 发展:取而代之CPUProfiler

自定义:

Debug.startMethodTracing("MYTAG");
Debug.stopMethodTracing();

1.3.2 SysTrace

扫描二维码关注公众号,回复: 5097483 查看本文章
  • 概念:性能数据的采集和分析工具【已经过时】
  • 发展:Android9.0系统自带SystemTrace】
  • 自定义:
Trace.beginSection("MyTrace");
Trace.endSection();

1.3.3 HierarchyViewer

  • 概念:View层级检测【已过时】
  • 发展:Layout Inspect取而代之

1.3.4 Profile GPU Rendering

渲染柱状图,红色就过渡了

1.3.5 AndroidLint

  • 层级检测
  • view个数检测

1.4 第三方工具

  • TimeMonitor
  • BlockCanary

1.5 启动优化

1.5.1 UI优化

1.5.2 启动逻辑优化

  • 分布加载
  • 异步加载
  • 延期加载 

2.内存优化

2.1 内存检测工具

  • Memory Monitor
  • MAT
  • LeakCanary

2.2 内存抖动

2.2.1 概念

在短时间内有大量的对象创建和回收,出现内存的忽高忽低

2.2.2 表现

内存图成锯齿状

2.3 数据类型

  • SparseArray
  • ArrayMap

2.4 图片优化

3.存储优化

  • SharedPrefenence
  • File
  • SQLite
  • ContentProvider

4.稳定性优化

4.1 代码审查

  • 何时审查
  • 审查什么

 公共模块

 业务模块

  • 谁来审查

 团队审查

 模块负责人审查

 结对审查

 自查

4.2 Crash监控

  • Java层Crash监控
  • Native层Crash监控
  • Crash上报机制

4.3 提高进程存活率

  • AlarmReceiver
  • BootReceiver
  • SyncAdapter

5.耗电优化

5.1 检测工具

  • Batterystats
  • Battery Historian

5.2 耗电模块

  • 显示
  • 网络
  • 耗电

5.3 优化

  • 计算优化
  • WakeLock使用不当

5.4 Job Scheduler

  • 在合适的时间
  • 合适的电量
  • 合适的网络条件

6.安装包优化

6.1 资源优化

6.2 代码优化

6.3 代码压缩

移除无效的类,属性,方法

6.4 代码混淆

把类名、方法名、属性名替换为一到两个字母

6.5 图片优化

6.6 ProGuard

6.7 Android Lint

 

猜你喜欢

转载自blog.csdn.net/geduo_83/article/details/86644072