1. 绘制优化
卡顿原因:16ms需要绘制一帧,如果主线程操作过多,会导致vsync到来时数据没有准备号,导致丢帧,应用卡顿。
overdraw : 不设置不必要的背景, cliprect绘制可见部分
减少层级,使用merge/include/stub
不要主线程做耗时操作
内存使用不当,频繁gc,影响主线程执行
工具: HirearchyView、Systrace、TraceView、GPU profile
2. 内存优化
android gc:gc类型,gc算法、堆分配。
使用合理的数据结构,例如SparseArrary系列(key为整型),arraymap代替hashmap
少使用枚举
频繁分配的可以创建线程池,要避免内存泄漏
不要在ondraw做分配对象
对bitmap的使用,注意使用insamplesize,inbitmap,rgb格式。
注意图片资源放置的位置。
使用完的ui资源图片设置为null。
3. 内存泄漏
原因:资源未释放(cursor, file, 广播),listenter未解注册,静态变量,内部类,handler,长时间运行的后台线程。
解决:heap dumper,mat. 关注大对象,activity,fragment。使用select语句,使用两次内存对比图等。
网友评论