Android性能优化:全面解析

发表时间: 2023-11-10 15:56
  1. 布局优化:关于布局优化的思想很简单,就是尽量减少布局文件的层级。
  • 删除布局中无用的控件和层次,选择高校的ViewGroup
  • include,merge,viewStub
  • 避免过度绘制
  1. 绘制优化:
  • onDraw中不要创建局部对象
  • onDraw中不要做耗时任务,不做大循环
  1. 内存优化:
  • 对象无引用判断方法:引用计数法 和 可达性分析法
  • 内存泄漏case:集合类泄漏;单例&静态变量泄漏;匿名内部类、非静态内部类泄漏;资源未关闭泄漏
  • 内存定位手段:MAT,LeakCanary
  1. 响应速度优化:核心思想是避免在主线程做耗时操作
  • 开启线程负责耗时操作,线程间通信
  • ANR
  1. ListView/RecycleVeiw/Bitmap优化
  • 使用ViewHolder模式来提高效率
  • 异步加载:耗时的操作放在异步线程中
  • ListView/RecycleView的滑动时停止加载和分页加载
  • Bitmap:压缩、采用矢量图,webp,用完recycle
  1. 线程优化:思想是采用线程池
  2. 包体优化:通过apk analyzer查看占用比例
  • 压缩图片大小,统一使用webp格式
  • 尽可能地减少本地资源,考虑从服务端拉取图片、Lottie动画、so库等资源
  • 利用Lottie替换帧动画
  • 开启混淆删除无用代码
  1. 启动优化:冷启动,热启动,页面跳转,控制在2s以内
  2. 渲染优化①避免过度的创建对象
    ②不要过度使用枚举,枚举占用的内存空间要比整型大
    ③常量请使用static final来修饰
    ④使用一些Android特有的数据结构,比如SparseArray和Pair等
    ⑤适当采用软引用和弱引用
    ⑥采用内存缓存和磁盘缓存
    ⑦尽量采用静态内部类,这样可以避免潜在的由于内部类而导致的内存泄漏