Blockcanary的使用以及电话冷启动优化实战

背景:其实优化内存。比较重要的是找到哪方法比较耗时。然后优化它。但是往往找那个方法比较耗时是最麻烦了。最笨的方法就是打Log看。有没有什么工具能帮我们傻瓜式操作呢。不需要自己手动打Log看。当然是有的。

BlockCanary框架就可以帮我们做到

1.下载BlockCanary

BlockCanary又叫AndroidPerformanceMonitor 是类似LeakCanary 的傻瓜操作工具。

可以在GitHub上找到,在GitHub搜索AndroidPerformanceMonitor。

image.png

附上As版本地址:https://github.com/markzhai/AndroidPerformanceMonitor
As的使用非常简单。具体看上面网站。
但是系统开发很多都是用Eclipse。
再附上Eclipse版本
https://github.com/painson/BlockcanarySample-Eclipse

2.配置依赖

Eclipse版本的使用方法也蛮简单。
下载Eclipse版的Demo.

image.png

1.依赖上

image.png

2.在我们的项目上加上这个AppBlockCanaryContext,用BlockCanaryContext.

image.png

3.在Application的OnCreate()加上

image.png
  1. AndroidManifest.xml加上
image.png

完成上面步骤就好了。

3.Blockcanary之电话冷启动优化实战

配置好了。安装Apk.会是这样的效果

image.png

附带右边BlockS 的App。

杀进程,我们点击Phone冷启动看看会有什么效果。

image.png

看到有阻塞通知的通知。
点进去

image.png

抓到两个在主线程阻塞的方法。同时显示了阻塞多少毫秒。
点开第一个Item看看。

image.png

直接告诉你在CallLogGroupBuider这个类的equalDate( )的239行发生了阻塞。

image.png

找到这个方法。接着就是代码分析了。
因为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/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,532评论 25 708
  • 历史是我们无法割舍的过去,这一大笔沉重的遗产在今天各人有各人的处置方法,单纯解读有之,重构再造亦有,论说影响力,文...
    王家人宁阅读 302评论 0 0
  • 3. 马义明显感受到有一道意味深长的目光在自己身上停驻许久,他丝毫不在意对方的打量,甚至还大大咧咧走到灯光更亮处。...
    吴辛口阅读 583评论 0 0
  • 写代码不可避免有Bug,通常情况下除了日志最直接的调试手段就是debug;那么你的调试技术停留在哪一阶段呢?仅仅是...
    东经315度阅读 485评论 0 0
  • 如果大家有印象的话,之前我还做过一期【雅美蝶,我居然在B站自学日语】的日语自学攻略,但可惜应者寥寥。 大概是雅蠛蝶...
    幻梦邪魂阅读 1,361评论 0 21