[关闭]
@lovesosoi 2019-07-07T14:19:51.000000Z 字数 762 阅读 607

anroid 性能优化

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

使用bitmap时 记得设置图片的Options和size

其他

crash 监控,把崩溃信息记录下来,上传服务器
xml中删除无用的属性
不要过多使用枚举类型,枚举占用的内存过大
软引用,弱引用的合理适当使用比如handle 持有activity 的弱引用
尽量采用静态内部类,避免内部类导致的内存泄漏
列表减少不必要的刷新,最好控制到单条刷新
使用手机的卡顿检查工具 profile Gpu Rendering
使用Android MAT 查看内存泄漏

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注