本着针对面试,不负责任的态度,写下《面试总结》系列。本系列记录面试过程中各个知识点,而不是入门系列,如果有不懂的自行学习。
大致分为四点去回答。快、稳、小、省
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
网友评论