Android 优化
概述
宽泛的内容,具体优化要针对具体的场景,以下是楼主想到的一些点
优化点
-
代码架构
好的架构具有高内聚、低耦合,易扩展,扩展是重点 -
数据模型选择
移动设备资源有限,根据使用场景选择合适数据模型,ArrayList、LinkedList、HashMap、ArrayMap、SparseArray -
内存泄漏
生命周期长的尽量少持有生命周期短,及时对无用的对象置null -
合理分配内存资源
对强、弱、软、虚引用合理的使用,优化代码逻辑,避免频繁分配内存对象,触发垃圾回收GC ,造成卡顿 -
业务逻辑
优化业务逻辑,复杂操作工作尽可能放在服务端操作,减少浮点型、乘除法计算 -
避免页面重复刷新
页面刷新策略尽可能在最小范围内刷新,没有使用到的页面尽量不刷新,同时也要避免刷新过一次重复刷新,可使用缓存 -
减少页面层级嵌套
减少页面层级嵌套,防止过度绘制 -
压缩、减小资源
部分图片资源可以转为svg形式使用,大图加载用bitmap工具类进行采样压缩,重设RGB格式 -
及时清理无用资源,释放内存
bitmap、Cursor、IO流等 -
使用系统提供的资源
一些颜色、风格可以使用系统自带的,线程使用频繁可以使用线程池,增加复用,减少重新创建 -
减小安装包体积
部分优化工具
-
GPU过度绘制调试工具
-
Android Memrory Montior内存监控工具
-
heap view 查看堆上的对象实例情况
-
腾讯bugly 监控app崩溃异常情况
-
Systrace 收集和检测时间app各个阶段消耗时间
-
Hierarchy Viewer可视化界面布局层级
-
严格模式strictMode
优化方法
- monkey压力测试
- 性能调优trace
- android studio的profile调试功能分别查看CPU/内存/电量调试
- monkey配合battery-historain电量调试功能
冷启动加速
- 多进程注意判断进程名,防止多进程正常进程业务
- 子线程初始化一些三分库,比较耗时的启动加载业务
- 优化启动页面的布局,简单布局层级
- 部分视图懒加载方式viewStub
- 优化启动的网络业务任务
内存优化
- bitmap压缩- 质量压缩、采样率压缩、缩放压缩, RGB565
- 多次使用图片最好进行缓存
- 自定义组件时,业务上不要一次性加载所有状态图片,及时recycle
- hashmap使用arraymap
- 内存泄漏,主页生命周期是App的长周期
电量优化
- 第三方库一些日志接口,特殊处理去掉
- 重复刷新
- 及时关闭对硬件资源的使用
异步初始化组件
** 梳理业务逻辑,延迟初始化组件、操作 **
** 正确使用线程;**
** 去掉无用代码、重复逻辑等。**
电量优化
- 第三方库有些心跳网络传输,如mob的log4日志传输,可以去掉传输