App性能优化

2022-07-26 17:05:31 浏览数 (1)

App性能优化

目录

1、稳定性

2、流畅度

3、耗损

4、安装包体积

1、稳定性

代码语言:javascript复制
# 公众号:AllTests软件测试
(1)内存优化
内存分析工具:
Memory Monitor 工具
Memory Analyzer工具
LeakCanary工具
Android Lint 工具

(1.1)避免内存泄漏
单例模式引用Activity类型Context
Activity中持有非静态内部类
资源性对象为关闭(File、Cursor等)
注册对象未注销(EventBus、RxJava、ButterKnife等)
Handler使用不当引起内存泄漏
容器中的对象没及时清理
WebView导致内存泄漏
(1.2)合理选择数据结构(SparseArray、ArrayMap等)
(1.3)减少不必要的内存开销(合理创建对象、复用)
(1.4)避免基本数据类型的装箱和拆箱消耗
byte->Byte
short->Short
int->Integer
float->Float
double->Double
char->Char
boolean->Boolean
(1.5)图片的压缩、大图片的分块加载

(2)崩溃
代码审查:
Alibaba Android开发规范手册
Alibaba Java开发规范手册
Android Lint
Alibaba代码审查工具
FindBugs

(2.1)Crash监控、处理、日志上传
Thread.setDefaultUncaughtExceptionHandler()
(2.2)提高代码质量、逻辑严谨性、代码审核

2、流畅度

代码语言:javascript复制
# 公众号:AllTests软件测试
(1)布局优化
使用轻量级UI组件(LinearLayout、FrameLayout),LinearLayout避免使用权重属性,比较耗费性能
通过RelativeLayout和ConstraintLayout减少复杂视图层级、布局扁平化,ConstraintLayout相对于RelativeLayout性能更好
布局复用(include标签)
View延迟加载(ViewStub标签)
减少层级(merge标签)
删除控件无用属性
wrap_content增加measure成本
(2)渲染优化(避免过度绘制)
移除XML中非必须的背景,移除Window默认的背景、按需显示占位背景图片
Canvas.clipRect()来帮助系统识别可见区域,只有可见区域才被绘制
(3)启动优化
减少Application的onCreate执行时间
减少启动页面的onCreate执行时间
三方SDK的异步初始化
(4)主线程任务优化
主线程避免耗时操作(网络访问/大文件的IO操作)
(5)视图刷新优化
减少刷新次数
缩小刷新区域
(6)动画优化
选择合适的动画框架

3、耗损

代码语言:javascript复制
# 公众号:AllTests软件测试
(1)耗电
计算优化
使用JobScheduler
合理的使用wack_lock
(2)流量
(3)网络
网络数据压缩传输
连接复用(keep-alive)
请求合并
数据缓存

4、安装包体积

代码语言:javascript复制
# 公众号:AllTests软件测试
(1)资源优化
Android Lint 删除冗余资源,资源复用、资源文件最少化等
(2)图片优化
使用一套图(主流分辨率)
图片无损压缩
SVG矢量图片
WebP图片
(3)代码优化
移除无用的代码、无用的依赖库
(4)libs库文件优化
so文件的动态下发
模块的插件化按需加载
(5)assets资源优化
音频文件采用有损压缩
(6)代码混淆
使用ProGuard代码混淆器工具,它包括压缩、优化、混淆等功能
(7)7z极限压缩

0 人点赞