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

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

BlockCanary框架就可以帮我们做到

1.下载BlockCanary

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

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

Blockcanary的使用以及电话冷启动优化实战_第1张图片
image.png

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

2.配置依赖

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

Blockcanary的使用以及电话冷启动优化实战_第2张图片
image.png

1.依赖上

Blockcanary的使用以及电话冷启动优化实战_第3张图片
image.png

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

Blockcanary的使用以及电话冷启动优化实战_第4张图片
image.png

3.在Application的OnCreate()加上

Blockcanary的使用以及电话冷启动优化实战_第5张图片
image.png
  1. AndroidManifest.xml加上
Blockcanary的使用以及电话冷启动优化实战_第6张图片
image.png

完成上面步骤就好了。

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

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

Blockcanary的使用以及电话冷启动优化实战_第7张图片
image.png

附带右边BlockS 的App。

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

Blockcanary的使用以及电话冷启动优化实战_第8张图片
image.png

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

Blockcanary的使用以及电话冷启动优化实战_第9张图片
image.png

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

Blockcanary的使用以及电话冷启动优化实战_第10张图片
image.png

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

Blockcanary的使用以及电话冷启动优化实战_第11张图片
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/

你可能感兴趣的:(Blockcanary的使用以及电话冷启动优化实战)