一、启动优化
Activity启动形式分为三种类型:热启动、冷启动、温启动。重点在冷启动。
假优化:欺骗用户,去掉黑白屏,看上去达到了优化的效果,实际上并没有;
真优化:从根本上解决启动慢的问题;闪屏页的预览window,三方库的初始化(延迟初始化,异步初始化)
检测工具:traceview
二、绘制优化
cpu计算矢量图交给gpu绘制bitmap,垂直同步机制,16ms之内要绘制完毕,否则会出现丢帧,出现卡顿;
feed(在列表的第一个条码绘制完成之后开始剩下的网络请求) cpu空闲处理任务
减少布局层级(include merge viewstub)
避免过度绘制 去掉不必要的背景颜色
工具:strictmode
三、内存优化
anr oom 内存泄露 内存抖动
activity 5s
service 前台10s 后台20s
broadcast 前台 20s 后台60s
如何检测anr system/data/traces.txt 系统记录anr的日志,但是只会保存三天
三方框架的检测原理:looper处理消息前后都会调用logging.print();可以把这个log替换为自己的。从而来记录每一个事件处理的时长。
有的框架是往messagequeue里面放一个消息,这个消息的处理结果就是计数加一,五秒后去检测这个消息有没有被处理,如果没有被处理就会被认为是anr
memoryprofile mat leakcanary
四、电量优化
避免后台耗时操作
要精确统计用户耗电状态;
五、网络优化
流量优化:数据的压缩,缓存,图片一定要压缩;
网络质量:请求速度,请求成功率,两个方面;
dns解析过程优化, 消息格式优化,
线上统计,线下优化;
网络请求使用增量更新;
http协议版本的选择 1.0(没有复用) 1.1(虽有复用,但是排队执行,如果有一个卡住,其他的任务也都会卡住) 2.0(实现了复用的同时,可以并行请求)
六、线程优化
线程的使用,推荐使用线程池,最好给每个线程起一个名字,在执行任务的时候就知道是什么线程
线程池的核心数参考asynctask
还可以设置线程池的优先级,比较重要的任务设置比较高 的优先级;
网友评论