面试题一:谈谈你对 Android 性能优化方面的了解?
1)启动优化: application中不要做大量耗时操作,如果必须的话,建议异步做耗时操作。
2)布局优化: 使用合理的控件选择,少嵌套。(合理使用 include,merge,viewStub等使用)
3)apk优化(资源文件优化,代码优化,lint检查,.9.png,合理使用 shape 替代图片,webp等)
4)性能优化,网络优化,电量优化
- 避免轮询,尽量使用推送。
- 应用处于后台时,禁用某些数据传输
- 限制访问频率,失败后不要无限重连
- 选用合适的定位服务(GPS定位,网络定位,被动定位)
- 使用缓存
- startActivityForResult替代发送广播
5)内存优化
- 循环尽量不使用局部变量
- 避免在onDraw中创建对象,onDraw会被频繁调用,容易造成内存抖动。循环中创建大的对象,也是如此。
- 不用的对象及时释放
- 数据库的cursor及时关闭
- adapter使用缓存
- 注册广播后,在生命周期结束时反注册
- 及时关闭流操作
- 图片尽量使用软引用,较大的图