背景:其實優(yōu)化內(nèi)存。比較重要的是找到哪方法比較耗時。然后優(yōu)化它。但是往往找那個方法比較耗時是最麻煩了。最笨的方法就是打Log看。有沒有什么工具能幫我們傻瓜式操作呢。不需要自己手動打Log看。當(dāng)然是有的。
BlockCanary框架就可以幫我們做到
1.下載BlockCanary
BlockCanary又叫AndroidPerformanceMonitor 是類似LeakCanary 的傻瓜操作工具。
可以在GitHub上找到,在GitHub搜索AndroidPerformanceMonitor。

附上As版本地址:https://github.com/markzhai/AndroidPerformanceMonitor
As的使用非常簡單。具體看上面網(wǎng)站。
但是系統(tǒng)開發(fā)很多都是用Eclipse。
再附上Eclipse版本:
https://github.com/painson/BlockcanarySample-Eclipse
2.配置依賴
Eclipse版本的使用方法也蠻簡單。
下載Eclipse版的Demo.

1.依賴上

2.在我們的項目上加上這個AppBlockCanaryContext,用BlockCanaryContext.

3.在Application的OnCreate()加上

- AndroidManifest.xml加上

完成上面步驟就好了。
3.Blockcanary之電話冷啟動優(yōu)化實戰(zhàn)
配置好了。安裝Apk.會是這樣的效果

附帶右邊BlockS 的App。
殺進程,我們點擊Phone冷啟動看看會有什么效果。

看到有阻塞通知的通知。
點進去

抓到兩個在主線程阻塞的方法。同時顯示了阻塞多少毫秒。
點開第一個Item看看。

直接告訴你在CallLogGroupBuider這個類的equalDate( )的239行發(fā)生了阻塞。

找到這個方法。接著就是代碼分析了。
因為equalDate會調(diào)用很多次。這里不斷new SimpleDateFormat和每次都格式化都是耗時的。
我們就可以針對優(yōu)化這個方法。
感謝:
該庫最初由 markzhai 創(chuàng)建, 并在 魔都三帥 組織下與 nimengbo 和 zzz40500 共同維護和更新.
特別鳴謝Mr.Bao, android-cjj, chiahaolu在項目早期做出的貢獻。
原理分析:
http://www.itdecent.cn/p/cd7fc77405ac
注意:經(jīng)過一段時間的使用。發(fā)現(xiàn)有一個局限性:僅僅在主線程阻塞了500ms才能檢測到。
Traceview:
所以還需要另一個分析卡頓工具 :Traceview
介紹這篇文章:講得很詳細(xì)。我不重復(fù)了。
http://blog.csdn.net/innost/article/details/9008691/