美文网首页
性能优化

性能优化

作者: Lupy_ | 来源:发表于2020-04-16 22:54 被阅读0次

    一、启动优化

    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

    还可以设置线程池的优先级,比较重要的任务设置比较高 的优先级;

    相关文章

      网友评论

          本文标题:性能优化

          本文链接:https://www.haomeiwen.com/subject/wvwloqtx.html