背景:其实优化内存。比较重要的是找到哪方法比较耗时。然后优化它。但是往往找那个方法比较耗时是最麻烦了。最笨的方法就是打Log看。有没有什么工具能帮我们傻瓜式操作呢。不需要自己手动打Log看。当然是有的。
BlockCanary框架就可以帮我们做到
1.下载BlockCanary
BlockCanary又叫AndroidPerformanceMonitor 是类似LeakCanary 的傻瓜操作工具。
可以在GitHub上找到,在GitHub搜索AndroidPerformanceMonitor。
附上As版本地址:https://github.com/markzhai/AndroidPerformanceMonitor
As的使用非常简单。具体看上面网站。
但是系统开发很多都是用Eclipse。
再附上Eclipse版本:
https://github.com/painson/BlockcanarySample-Eclipse
2.配置依赖
Eclipse版本的使用方法也蛮简单。
下载Eclipse版的Demo.
1.依赖上
2.在我们的项目上加上这个AppBlockCanaryContext,用BlockCanaryContext.
3.在Application的OnCreate()加上
- AndroidManifest.xml加上
完成上面步骤就好了。
3.Blockcanary之电话冷启动优化实战
配置好了。安装Apk.会是这样的效果
附带右边BlockS 的App。
杀进程,我们点击Phone冷启动看看会有什么效果。
看到有阻塞通知的通知。
点进去
抓到两个在主线程阻塞的方法。同时显示了阻塞多少毫秒。
点开第一个Item看看。
直接告诉你在CallLogGroupBuider这个类的equalDate( )的239行发生了阻塞。
找到这个方法。接着就是代码分析了。
因为equalDate会调用很多次。这里不断new SimpleDateFormat和每次都格式化都是耗时的。
我们就可以针对优化这个方法。
感谢:
该库最初由 markzhai 创建, 并在 魔都三帅 组织下与 nimengbo 和 zzz40500 共同维护和更新.
特别鸣谢Mr.Bao, android-cjj, chiahaolu在项目早期做出的贡献。
原理分析:
http://www.jianshu.com/p/cd7fc77405ac
注意:经过一段时间的使用。发现有一个局限性:仅仅在主线程阻塞了500ms才能检测到。
Traceview:
所以还需要另一个分析卡顿工具 :Traceview
介绍这篇文章:讲得很详细。我不重复了。
http://blog.csdn.net/innost/article/details/9008691/