先贴上原版
下边这个用来速记用可能不全
性能优化:
- 布局优化
- 绘制优化
- 内存优化
- 线程优化
- 响应速度优化
- 耗电优化
- apk瘦身
- 其他优化
布局优化:
- 就是减少布局的嵌套 布局的层数少了 变相增加了android的绘制速度
- 删除无用的布局使用合适的布局 绘制速度上 FramLayout>LinearLayout>RelativeLayout
- 采用<icclude>标签 提高布局复用
- 使用ViewStub延时加载按需求加载布局 提高程序初始化效率
绘制优化:
- 自定义view的onDraw方法里面避免重复创建新的局部对象 因为这个方法会重复调用 这样会占内存
- 同样也不要做耗时操作 会抢占cpu时间 造成绘制不流畅
内存优化:
- file文件 io流等都有缓存 不用时要关闭
- 注册对象记得注销 不然可能会导致观察者对象一直维持着该对象的引用
- 存放对象的集合 不用时记得清空
- webview不会自动释放内存 不用时记得destroy
- 还可以通过一些分析工具如MAT来找出潜在的内存泄漏 然后解决
- 内存泄漏会导致app占用内存过高 严重时会导致OOM内存溢出
响应速度优化:
- 主线程不要做耗时操作
- 太多可能会导致启动时黑屏或者ANR程序未响应
线程优化:
- 采用线程池
- 可以复用线程 避免在程序中创建大量的Thread 减少性能开销
- 可以控制线程最大并发数 避免大量线程抢占资源导致阻塞
耗电优化:
- 使用增强for循环和switch语句代替if语句 避免使用浮点运算
- 减少网络状态下的数据传输
- 避免wakelock锁使用不当 这个锁会使cpu一直处于启动状态 非常耗电 要合理使用
apk瘦身:
- 使用proGuard工具 它包括压缩 优化 混淆等功能
- 使用shape代替背景图片
- 资源优化: 比如使用android自带的Lint工具删除多余的资源 资源文件最少化
- 第三方库优化: 避免重复功能的so库 删除v7 x86 下的包 jar包等
- 插件优化: 如某些功能某些模块 按需求下载 减少安装包大小
其他优化:
- 刷新优化:合理利用缓存 减少刷新次数 缩小刷新范围
- log优化: 项目上线前清楚log
- 广播优化:避免使用全局广播 全局广播十分消耗性能 如果进行内部传递尽量使用接口回掉或者eventBus代替 动态广播使用后要记得注销
- 内部类优化:尽量使用静态内部类 这样可以避免潜在的由于内部类创建实例而导致的内存泄漏 *非静态内部类会持有外部类的引用,其外部类在销毁之前,如果该非静态内部类的任务还未完成,将会导致外部类的内存资源无法正常释放,造成了内存泄漏。静态内部类中未持有外部类的引用*
- 枚举:避免使用枚举。。。内存开销大