卡頓問題分析-工具使用實錄

問題

  1. 有的時候界面很卡争群,我們該如何定位哄褒?

現(xiàn)狀

面試過很多人藏否,對于這個問題鞭衩,大部分都是這樣回答的:

分情況:
1. 啟動卡頓门驾,應(yīng)該看下都有哪些耗時操作射赛,嘗試延后執(zhí)行
2. 滑動卡頓,考慮優(yōu)化view復(fù)用
3. 交互優(yōu)化奶是,有些是等待IO
另外從 內(nèi)存泄露 界面布局層次 界面重復(fù)渲染方面找問題

雖然不能說是錯誤的楣责,但是整體的來說都是依靠經(jīng)驗和審代碼,很少涉及工具使用聂沙,很難做到問題的準(zhǔn)確定位秆麸,更不用說優(yōu)化了

實踐記錄

現(xiàn)象描述

我們有一個界面,打開之后會根據(jù)狀態(tài)自動滑動到第二個tab頁及汉,但是在滑動過程中比較卡沮趣,期望優(yōu)化

分析

整個操作涉及兩部分:頁面啟動,tab滑動豁生,
第一部分因為是原位置從無到有兔毒,而且有l(wèi)oading,所以用戶感知不大甸箱,第二部分因為涉及頁面內(nèi)容滑動育叁,所以特別明顯。

所謂的卡頓芍殖,其實對技術(shù)而言就是掉幀豪嗽,簡單說就是界面的渲染流程沒能在16ms內(nèi)完成,所以我們需要知道渲染流程每個階段大致用了多少時間,哪個過程耗時較多

工具上場

GPU呈現(xiàn)模式分析

打開設(shè)置-開發(fā)者選項-GPU呈現(xiàn)模式分析龟梦,選擇在屏幕上顯示為條形圖隐锭。
此時我們可以看到屏幕上多出了很多柱條,條形圖含義請參考下面的鏈接說明计贰。
進(jìn)行復(fù)現(xiàn)操作钦睡,我們發(fā)現(xiàn)柱條很少,每一個都超出了16ms的準(zhǔn)線躁倒,而且深綠色偏長荞怒,說明我們在主線程做了很多和UI無關(guān)的耗時操作。

CPU Profiler

設(shè)備連上studio秧秉, 打開Android Profiler褐桌, 選擇CPU,使用說明請參考下面鏈接象迎。
點擊record荧嵌,進(jìn)行復(fù)現(xiàn)操作,停止record砾淌。
檢查記錄啦撮,此時可能有朋友會問這個結(jié)果怎么看,我簡單說下

因為我們分析的是卡頓汪厨,主要看主線程逻族,所以首先選擇主線程,然后通過Call chart我們可以看到主線程的方法執(zhí)行骄崩,
一般是loop對事件分發(fā)然后各種處理聘鳞,我在實際操作時就可以看到onCreate執(zhí)行了多長時間,而其中onCreate里的每個方法執(zhí)行了多長時間要拂,還有一些切換到主線程的回調(diào)執(zhí)行了多長時間抠璃,還有onResume執(zhí)行了多少時間。

通過這個結(jié)果我大概發(fā)現(xiàn)了一些造成卡頓的問題:

  1. 部分工具類的實際耗時比想象的長
  2. 網(wǎng)絡(luò)請求的回調(diào)在主線程執(zhí)行脱惰,而其中涉及一些大數(shù)據(jù)json的解析耗時較長
  3. 部分view是根據(jù)數(shù)據(jù)動態(tài)生成的搏嗡,創(chuàng)建一個自定義view耗時較長,主要原因是view的xml較復(fù)雜
  4. Presentation的show方法執(zhí)行耗時特別長

Systrace

這個工具我也有嘗試拉一,但是效果不好采盒,使用說明請參考下面鏈接。
好處是它會直接告訴你一些程序的問題蔚润,比如主線程調(diào)度delay磅氨、draw方法執(zhí)行過程、measure時間過長嫡纠,
壞處或者說不好用的地方烦租,在我的電腦上 Ubuntu 16.04, 這個工具無法指定檢測時長無論是否指定-t參數(shù)延赌,而且有時會記錄其他app而不記錄我想檢測的app,即使添加-a參數(shù)叉橱,另外有一些時候生成的報告無法打開挫以,好像是時間設(shè)置問題,但是網(wǎng)上沒有搜索到相關(guān)解決方案窃祝。大家有空可以嘗試下掐松。

解決方案

將耗時操作移入子線程,并且注意子線程的優(yōu)先級要低于主線程粪小。

參考

GPU呈現(xiàn)模式分析
CPU Profiler
Systrace

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末甩栈,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子糕再,更是在濱河造成了極大的恐慌,老刑警劉巖玉转,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件突想,死亡現(xiàn)場離奇詭異,居然都是意外死亡究抓,警方通過查閱死者的電腦和手機(jī)猾担,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來刺下,“玉大人绑嘹,你說我怎么就攤上這事¢佘裕” “怎么了工腋?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長畅卓。 經(jīng)常有香客問我擅腰,道長,這世上最難降的妖魔是什么翁潘? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任趁冈,我火速辦了婚禮,結(jié)果婚禮上拜马,老公的妹妹穿的比我還像新娘渗勘。我一直安慰自己,他們只是感情好俩莽,可當(dāng)我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布旺坠。 她就那樣靜靜地躺著,像睡著了一般扮超。 火紅的嫁衣襯著肌膚如雪价淌。 梳的紋絲不亂的頭發(fā)上申眼,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天,我揣著相機(jī)與錄音蝉衣,去河邊找鬼括尸。 笑死,一個胖子當(dāng)著我的面吹牛病毡,可吹牛的內(nèi)容都是我干的濒翻。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼啦膜,長吁一口氣:“原來是場噩夢啊……” “哼有送!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起僧家,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤雀摘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后八拱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體阵赠,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年肌稻,在試婚紗的時候發(fā)現(xiàn)自己被綠了清蚀。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡爹谭,死狀恐怖枷邪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情诺凡,我是刑警寧澤东揣,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站腹泌,受9級特大地震影響救斑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜真屯,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一脸候、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧绑蔫,春花似錦运沦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至篓叶,卻和暖如春烈掠,著一層夾襖步出監(jiān)牢的瞬間羞秤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工左敌, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留瘾蛋,地道東北人。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓矫限,卻偏偏與公主長得像哺哼,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子叼风,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容