性能优化(理论简化版)

先贴上原版 

性能优化 详细版

下边这个用来速记用可能不全 


性能优化:

  1. 布局优化
  2. 绘制优化
  3. 内存优化
  4. 线程优化
  5. 响应速度优化
  6. 耗电优化
  7. apk瘦身
  8. 其他优化

布局优化:

  • 就是减少布局的嵌套 布局的层数少了 变相增加了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代替 动态广播使用后要记得注销
  • 内部类优化:尽量使用静态内部类 这样可以避免潜在的由于内部类创建实例而导致的内存泄漏  *非静态内部类会持有外部类的引用,其外部类在销毁之前,如果该非静态内部类的任务还未完成,将会导致外部类的内存资源无法正常释放,造成了内存泄漏。静态内部类中未持有外部类的引用*
  • 枚举:避免使用枚举。。。内存开销大

猜你喜欢

转载自blog.csdn.net/qq_42259105/article/details/82840955