@lovesosoi
2019-07-07T14:19:51.000000Z
字数 762
阅读 607
Android面试
1.LinearLayout 和 RelativeLayout 都可以用的时候尽量采用linearlayout
2.include 与 merge 与 viewstub
3.使用ConstraintLayout 替换常见布局 性能更高
4.使用HierarchyView 查看布局的绘制的时间
5.Debug Gpu overDraw 过度绘制检测
小知识:Android的每帧绘制间隔16ms
自定义view 的onDraw 绘制不能做耗时操作
使用canvas.clipRect()来帮助系统识别哪些时可见区,可以避免过度绘制
静态变量导致内存泄漏
单例模式导致内存泄漏
文件操作不关闭导致内存泄漏
注册对象未注销导致内存泄漏
属性动画导致内存泄漏(属性动画没有停止时,动画会一直播放下去,尽管看不到效果,但是activity的view 会被动画持有,导致activity 不能释放泄漏当前的activity,要及时停止动画)
handler 导致内存泄漏(包括创建时持有activity的弱引用,onDestory 销毁时removeMessage)
使用leakcanary 检查内存泄漏
少用new thread 多用线程池ThreadPoolExecutor控制
使用bitmap时 记得设置图片的Options和size
crash 监控,把崩溃信息记录下来,上传服务器
xml中删除无用的属性
不要过多使用枚举类型,枚举占用的内存过大
软引用,弱引用的合理适当使用比如handle 持有activity 的弱引用
尽量采用静态内部类,避免内部类导致的内存泄漏
列表减少不必要的刷新,最好控制到单条刷新
使用手机的卡顿检查工具 profile Gpu Rendering
使用Android MAT 查看内存泄漏