各位小伙伴们,大伙都知道 android 有很多性能分析工具,有抓内存泄露的,有看视图层级的等等,大伙也应该用过或是看别人用过吧。这个重要性毋庸置疑了吧,比如你写得页面布局复杂,页面显示慢,你是知道慢,但是不知道具体哪里慢,有多慢,这就需要我们上分析工具啦,要不你说不知道问题具体在哪里啊,再者你写得 app 跑起来卡不卡,不光是自己凭感觉的,也是要通过工具来看看丢帧严重不严重啊,所以啊这些分析工具就是发现定位问题的,虽然找到问题不一定有好办法,但是发现不了是不是更挠头,更不爽啊。再说了这些工具开起来,各种图标亮一亮,尤其是领导一过,一看这么多看不懂的图标,工具,这小子好厉害啊,哈哈,装逼神器是也,从此加薪升职,走上赢取测试 MM的人生巅峰,嘿嘿... 冲着把逼装好,小伙伴们也得走起啊
android各种工具分类
-
app 每帧耗时追踪
-
GPU 呈现模式分析
android 手机自带功能,可以查看每一帧的耗时,和不同类型任务耗时 -
systrace
studio DDMS 里面的工具,可以查看每一帧的耗时,和造成耗时的方法
-
GPU 呈现模式分析
-
app 性能追踪
-
TraceView
追踪方法的执行情况,查看方法的耗时和 cpu 资源消耗 -
blockcanary
在主线程 looper 中添加 printer,利用 looper 在分发任务执行前后会调用 printer 的机制,判断任务前后的耗时,超过阀值就生成一条日志提醒
-
TraceView
-
内存追踪
-
GPU性能分析
代码分析工具
以上的种种工具有android studio 自带的,有 android 手机自带的,有第三方工具,这些都会一一介绍,不敢说讲解,只是给大家一个介绍,干个抛砖引玉的事罢了。这些工具都是有很多很高深的应用方式的,这个就不是我能知道的了,大伙还是的自己多多适应研究啊。
android 优化理论
万事初始,理论先行,理论都不知道,给你上面的那些工具你又能怎样呢,再说这些工具的目的也是为了发现定位问题,至于找到问题如何解决,什么算是问题,哪里可以优化这些没有理论是不行的
这里我就不班门弄斧了,已经有很多优秀的文章了,这里贴出来:
我这里也稍稍总结了下,偷懒的可以去看哦,呵呵哒
我学习这些工具的起始源于知乎上的一个话题,一下子打开了我的视野,之前这些炫酷的工具不甚了解,有兴趣的朋友可以去看看,很短,但是对于不了解的朋友可以开阔不少眼界
我对性能优化理解
上面我罗列了这么多工具,根本目的还是为了能够在我们需要的时候发现问题,定位问题工具只不过是具体的一种手段,这里我说下自己的体会
性能优化的核心做法无外乎4种:
- 减少重复工作
这里侧重于代码的具体编写,能 new 一个对象的,你非要 new 10个对象 - 优化执行时机
典型的案例是在页面的 onCreate 函数里,你干好多耗时操作,让一些不是很着急的工作去和页面加载工作抢资源,这里耗时操作可以在做一个延迟加载,在页面显示后再去干 - 工作量拆分
打个比喻好比工作量对于一个人来说很大,那么就多找几个人干。具体的例子有微信 V2.0 版的架构,就把 webview 放到单独一个进程去干,在操作系统来看一个进程就好比一个人一样的 - 优化架构
高玩都说一个好的架构比代码优化重要的多,打个比喻,图钱加载现在都是用一个全局的缓存,但是你在每一个页面里都维护一个缓存,那么你每个页面里的缓存维护的再好,性能也比不上好的架构只需维护一个缓存
文章目录
- android性能跟踪分析工具系列 - 各种理论/方法简介
- android性能跟踪分析工具系列 - GPU 呈现模式分析
- android性能跟踪分析工具系列 - systrace
- android性能跟踪分析工具系列 - TraceView
- android性能跟踪分析工具系列 - Hierarchy Viewer
- android性能跟踪分析工具系列 - LeakCanary
- android性能跟踪分析工具系列 - blockcanary
- android性能跟踪分析工具系列 - Memory monitor - jump java heap
- android性能跟踪分析工具系列 - StallBuster