各位小伙伴們,大伙都知道 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