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

本文深入探讨Android性能优化,涵盖启动优化、布局优化、APK优化、内存管理和防止内存泄漏等方面,同时讲解了导致内存泄漏的常见情况、自定义Handler避免内存泄漏的策略以及解决OOM问题的方法。此外,还提到了ANR的出现场景及解决方案,以及Android内存优化的各种策略,如避免静态成员引用、合理使用Bitmap和Handler。

1800

被折叠的 条评论
为什么被折叠?



