android 卡頓優(yōu)化知識(shí)點(diǎn)總結(jié)

android 渲染的幾個(gè)關(guān)鍵詞

surfaceflinger -> 刷新率
編舞者 -> 制圖速度 choreographer /?k??ri?ɑ?ɡr?f?r/
vsync 垂直同步信號(hào).
一秒60幀, 16.66ms通過vsync信號(hào)觸發(fā)一次刷新.

卡頓的主觀因素

  1. main looper里的event事件的處理有沒有耗時(shí)問題.
  2. 測(cè)量, 布局, draw當(dāng)中的代碼運(yùn)行速度慢. 因此不要在這三個(gè)方法中進(jìn)行大量運(yùn)算.
  3. 布局層疊深度不要過深. 過深的話就會(huì)有很多view需要執(zhí)行測(cè)量, 布局, draw當(dāng)中的代碼.

卡頓的客觀因素

  1. JVM GC STW (stop the world)會(huì)讓所有線程, 包括UI線程都會(huì)暫停.
  2. binder通信, 和其他進(jìn)程的調(diào)用被卡住了.

使用systrace定位問題

事故類型是什么.
1.1 UI繪制導(dǎo)致的問題 綠色偏多導(dǎo)致超時(shí)
1.2 事件處理導(dǎo)致的問題 綠色偏多導(dǎo)致超時(shí)
1.3 層級(jí)過多導(dǎo)致的繪制超時(shí)
1.4 GC導(dǎo)致的超時(shí) UI線程 紫色頻繁
1.5 IO導(dǎo)致的超時(shí) UI線程 橙色頻繁
1.6 binder通信導(dǎo)致的超時(shí) UI線程 灰色頻繁
systrace是定位不到代碼具體的位置的, 它是用來定位事故類型的.

systrace的使用. 啟動(dòng)后, 手動(dòng)操作, 然后結(jié)束.
systrace會(huì)把這期間的幀率變化, 線程狀態(tài)給記錄下來.
在frame這欄里, 間歇性的稍微紅幾幀的地方不用去看, 可能當(dāng)時(shí)jvm在gc, 這種情況是可以接受的, 偶爾性的掉6,7幀不影響用戶體驗(yàn).
要看frame這欄里, 那種連續(xù)紅和黃的位置, 這才是卡頓發(fā)生的時(shí)間段.

之后看UIThread這欄 中 choreographer#doFrame 這行的顏色, 不同顏色對(duì)應(yīng)著不同的事故類型.

卡頓代碼的定位

可以使用開源的BlockCanary定位, 實(shí)現(xiàn)思路是通過ActivityThread里有個(gè)logging對(duì)象來記錄msg的處理開始和結(jié)束時(shí)間. 并且ActivityThread對(duì)外提供了setLogging()的方法. 因此可以在外部創(chuàng)建出一個(gè)自己的logging對(duì)象set進(jìn)去. 時(shí)間超過閾值的時(shí)候, 在log和通知里提示給用戶.
但定位有時(shí)候不準(zhǔn), 也有些在一些機(jī)型上, 通知不彈出的問題, 需要進(jìn)行適配解決.

還可以使用hugo和我自己開發(fā)的插樁庫, 在相關(guān)的Activity和View的頭部加注解, 對(duì)耗時(shí)方法進(jìn)行排查.

--- done.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市书在,隨后出現(xiàn)的幾起案子灰伟,更是在濱河造成了極大的恐慌,老刑警劉巖蕊温,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件袱箱,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡义矛,警方通過查閱死者的電腦和手機(jī)发笔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凉翻,“玉大人了讨,你說我怎么就攤上這事≈坪洌” “怎么了前计?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)垃杖。 經(jīng)常有香客問我男杈,道長(zhǎng),這世上最難降的妖魔是什么调俘? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上宛裕,老公的妹妹穿的比我還像新娘。我一直安慰自己先蒋,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布宛渐。 她就那樣靜靜地躺著竞漾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪窥翩。 梳的紋絲不亂的頭發(fā)上业岁,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音鳍烁,去河邊找鬼叨襟。 笑死,一個(gè)胖子當(dāng)著我的面吹牛幔荒,可吹牛的內(nèi)容都是我干的糊闽。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼爹梁,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼右犹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起姚垃,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤念链,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后积糯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掂墓,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年看成,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了君编。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡川慌,死狀恐怖吃嘿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情梦重,我是刑警寧澤兑燥,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站琴拧,受9級(jí)特大地震影響降瞳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蚓胸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一力崇、第九天 我趴在偏房一處隱蔽的房頂上張望斗塘。 院中可真熱鬧,春花似錦亮靴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至八毯,卻和暖如春搓侄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背话速。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工讶踪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人泊交。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓乳讥,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親廓俭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子云石,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

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