Android性能优化
2021-11-16 16:08:49 32 举报
AI智能生成
Android性能优化是指对Android应用进行一系列的改进,以提高其运行速度、响应时间和用户体验。这包括减少应用程序的内存占用、CPU使用率和电池消耗,以及提高应用程序的稳定性和可靠性。常见的Android性能优化措施包括:优化布局、减少绘制时间、使用缓存、异步加载数据、避免内存泄漏等。这些措施可以帮助开发者创建更加高效、流畅且具有吸引力的应用程序。
作者其他创作
大纲/内容
UI优化(卡顿)
页面绘制
过度绘制,某些像素在同一帧时间多次绘制,似的CPU、GPU负载过重
布局嵌套层级太深,无法在16ms内完成渲染
刷新频繁,刷新范围太大
频繁的触发measure、layout;整个view频繁的重新渲染
自定义view onDraw()创建对象,会导致gc频繁
动画
数据处理
主线程做了稍微耗时操作;读取解析数据
创建大量垃圾对象导致gc频繁,会阻塞本次渲染
启动优化
内存优化
内存泄漏
原因
JJVM角度而言,主要是堆内存泄漏,分配出去堆内存没有及时回收导致
代码角度而言,不再使用的对象被其他对象所引用,导致它无法及时回收,Activity泄漏
案例
非静态内部类、匿名内部类Hanlder、Thread、AsyanTask
单例模式传入Activity对象
观察者模式注册之后,关闭页面时没有返注册
资源性对象未关闭,Cursor、File等
Webview泄漏,放在单独进程
Bitmap没有及时回收
分析工具
profile、LeakCanary
内存抖动
大量垃圾对象的快速创建、回收,导致gc频繁
OOM
超过App进程分配的阀值就会OOM
加载大图、长图,Bitmap没有做压缩
一些大的资源对象使用完毕没有及时回收
内存泄漏最严重的结果就是OOM
APK优化
资源文件
图片用svg、webp格式
drawable xml用代码来写
代码
代码混淆
删除不必要的代码和库
ndk、so文件保留一个arm就可以了
三方库太大,可以考虑小一点的替代方案,或者下载源码按需求重新编译
网络优化
连接复用
body做gzip压缩
合并请求
异常拦截
请求失败
解析异常
断点续传、分片传输、失败重连
Protocol Buffer
存储优化
SharedPrefence
存储简单的配置数据等
SQLite
存储复杂的关系型数据
File
一般存储日志文件,本地文件缓存, protobuf ,7z
ContentProvider
跨进程数据访问,一般和SQLite结合使用,把数据提供给其他app进程使用
网络存储
网络存储涉及到序列化/反序列化(protobuf,xml,json)
0 条评论
下一页