Android优化

本着针对面试,不负责任的态度,写下《面试总结》系列。本系列记录面试过程中各个知识点,而不是入门系列,如果有不懂的自行学习。

不负责任系列

大致分为四点去回答。快、稳、小、省

1. 快

启动快,加载快,避免卡顿

基本操作
  • 主线程不做耗时操作
  • application里对必要的三方库延迟初始化(延迟加载,异步加载,分布加载)
  • 启动白屏优化
View优化
  • View 布局(viewstub,include,merge,层级深)
  • 复杂页面细分优化
  • 过度绘制的优化
  • xml中无用的背景不设置
  • 控件无用属性删除
内存优化
  • 页面切换,前后台切换
  • fragment的懒加载
  • 必要的缓存
  • 空间换时间
  • 四大引用的合理使用
  • 减小不必要的内存开销
  • 数据bean的合理定义
  • ArrayList、HashMap的使用
  • 线程池、bitmap、view的复用
  • 不用的大对象主动设置null
代码优化
  • for循环内不定义对象
  • 使用文件IO代替数据库
  • 自定义Drawable不在draw()里面创建对象操作
  • 类中没有使用到成员变量的方法可以设置static

2. 稳

稳定不崩溃,减小crash,避免anr

  • 主线程不做耗时操作
  • activity 5秒、broadcast 10秒、service 20秒
  • 资源对象及时关闭(Cursor,File)
  • Handler的处理
  • 避免内存泄露
  • crash上传机制
  • WebView的内存泄露

3. 小

安装包小

  • 代码混淆(proguard)
  • 资源优化(lint)
  • 图片优化(mipmap/webp)

4. 省

省电省流量

  • 接口定义
  • 接口缓存

性能分析工具

MAT/TracView/LeakCanary/blockCanary/MemoryMonitor/HeapViewer

你可能感兴趣的:(Android优化)