日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > php開源 > 綜合技術(shù) > Android 性能優(yōu)化:使用 TraceView 找到卡頓的元兇

Android 性能優(yōu)化:使用 TraceView 找到卡頓的元兇

來源:程序員人生   發(fā)布時間:2017-03-21 08:49:41 閱讀次數(shù):13272次

讀完本文你將了解到:

    • 前言
    • TraceView 是甚么
    • 生成 trace 文件
      • 使用代碼生成 trace 文件
      • 使用 Android Studio 生成 trace 文件
      • 使用 DDMS 生成 trace 文件
    • 根據(jù) TraceView 顯示內(nèi)容定位問題
    • 解決 DDMS 中的 TraceView 沒法搜索find 沒法使用的問題
      • 解決辦法就是直接使用 SDK 中的 TraceView
    • TraceView 的使用處景
    • 總結(jié)
    • 相干瀏覽
    • Thanks

前言

今天瀏覽了1篇文章 《Android性能優(yōu)化(1)之啟動加速35%》挺不錯的,有興趣的可以去看下。

作者在文中為了定位啟動耗時的問題,使用了 TraceView。

之前知道但是1直沒用過這個工具,今天拭心和大家1起學習下它 (? ??_??)?。

TraceView 是甚么

TraceView 是 Android SDK 中內(nèi)置的1個工具,它可以加載 trace 文件,用圖形的情勢展現(xiàn)代碼的履行時間、次數(shù)及調(diào)用棧,便于我們分析。

trace 文件是 log 信息文件的1種,可以通過代碼,Android Studio,或 DDMS 生成。

使用 Android SDK 提供的工具可以生成很多 log 文件,便于我們分析當前利用的內(nèi)存、布局等狀態(tài),下面是幾種文件的截圖:

shixinzhang

手機卡頓很多時候都是由于某個操作過于耗時,在茫茫代碼中查找首惡未免太過痛苦,這時候候就該體現(xiàn) TraceView 的價值了。

生成 trace 文件

生成 trace 文件有3種方法:

  1. 使用代碼
  2. 使用 Android Studio
  3. 使用 DDMS

1.使用代碼生成 trace 文件

  Debug.startMethodTracing("shixintrace");    //開始 trace,保存文件到 "/sdcard/shixintrace.trace"
    // ...
    Debug.stopMethodTracing();    //結(jié)束

代碼很簡單,當你調(diào)用開始代碼的時候,系統(tǒng)會生產(chǎn) trace 文件,并且產(chǎn)生追蹤數(shù)據(jù),當你調(diào)用結(jié)束代碼時,會將追蹤數(shù)據(jù)寫入到 trace 文件中。

下1步使用 adb 命令將 trace 文件導出到電腦:

adb pull /sdcard/shixintrace.trace /tmp

使用代碼生成 trace 方式的好處是容易控制追蹤的開始和結(jié)束,缺點就是步驟略微多了1點。

2.使用 Android Studio 生成 trace 文件

Android Studio 內(nèi)置的 Android Monitor 可以很方便的生成 trace 文件到電腦。

在 CPU 監(jiān)控的那欄會有1個鬧鐘似的的按鈕,未啟動利用時是灰色:

shixinzhang

啟動利用后,這個按鈕會變亮,點擊后開始追蹤,相當于代碼調(diào)用 startMethodTracing:

shixinzhang

當要結(jié)束追蹤時再次點擊這個按鈕,就會生成 trace 文件了。

生成 trace 后 Android Studio 自動加載的 traceview 圖形以下:

shixinzhang

從這個圖可以大概了解1些方法的履行時間、次數(shù)和調(diào)用關(guān)系,也能夠搜索過濾特定的內(nèi)容。

左上角可以切換不同的線程,這其實也是直接用 Android Studio 查看 trace 文件的缺點:沒法直觀地對照不同線程的履行時間。

鼠標懸浮到黃色的矩形上,會顯示對應方法的開始、結(jié)束時間,和自己占用和調(diào)用其他方法占用的時間比例:

shixinzhang

3.使用 DDMS 生成 trace 文件

DDMS 即 Dalvik Debug Monitor Server ,是 Android 調(diào)試監(jiān)控工具,它為我們提供了截圖,查看 log,查看視圖層級,查看內(nèi)存使用等功能,可以說是如今 Android Studio 中內(nèi)置的 Android Monitor 的前身。

雙擊 shift 彈出全局搜索,搜索 “Android Device Monitor”:

shixinzhang

或直接在 設置里設置 Android Device Monitor 的快捷鍵:

shixinzhang

打開 Android Device Monitor,在 DDMS 中打開 trace 文件,DDMS 會啟動 TraceView 加載 trace 文件:

shixinzhang

上圖介紹了 TraceView 的大致內(nèi)容:

  • 上半部份顯示了 不同線程的履行時間
    • 其中不同的色彩表示不同的方法
    • 同1個色彩越長,說明履行時間越久,如圖中的主線程 main
    • 空白表示這個時間段內(nèi)沒有履行內(nèi)容
  • 下半部份展現(xiàn)了不同方法的履行時間信息,關(guān)鍵指標有3個:
    • Cpu Time/Call :該方法平均占用 CPU 的時間
    • Real Time/Call :平均履行時間,包括切換、阻塞的時間,>= Cpu Time
    • Calls + Recur Calls/Total :調(diào)用、遞歸次數(shù)

點擊下面的任意1個方法,可以看到它的詳細信息:

  • Parents:選中方法的調(diào)用途
  • Children:選中方法調(diào)用的方法

shixinzhang

根據(jù) TraceView 顯示內(nèi)容定位問題

定位問題時 TraceView 的使用方式:

  • 從上半部份查看哪些線程履行時間長?甚么時候開始履行?與主線程交錯時間?
  • 哪些方法的履行需要花費很長時間
    • 點擊 TraceView 中的 Cpu Time/Call,依照占用 CPU 時間從高到低排序
  • 哪些方法調(diào)用次數(shù)非常頻繁
    • 點擊 TraceView 中的 Calls + Recur Calls/Total ,依照調(diào)用次數(shù)從高到底排序

排序后,然后逐一排查是不是有項目代碼或依賴庫代碼,有的話點擊查看詳情,查看是這個方法還是調(diào)用的子方法的問題,進1步定位問題。

解決 DDMS 中的 TraceView 沒法搜索,find 沒法使用的問題

Traceview 中信息太多,想要查找可使用最下方的 find:

shixinzhang

但是目前 DDMS 中的 TraceView 有 bug,find 沒法使用,許多人給 Google 提 issue 提了 5 年也沒有解決 ╮(╯_╰)╭ :

shixinzhang
(圖片截自:https://code.google.com/p/android/issues/detail?id=38825)

解決辦法就是直接使用 SDK 中的 TraceView:

直接打開 SDK 中的 TraceView :

這里寫圖片描述

然后打開之前生成的 trace 文件:

shixinzhang

如果直接打開 traceview 有問題,可以通過命令行 traceview 打開:

shixinzhang

雖然提示 deprecated,但最少在搜索上還是比 Android Device Monitor 中好用。

TraceView 的使用處景

在發(fā)現(xiàn)某個頁面或操作會卡頓時,可使用 TraceView 定位問題代碼。

比如啟動,加載圖片列表卡頓等情況。

總結(jié)

Android SDK 中提供了許多工具幫助我們發(fā)現(xiàn)問題,在學會使用工具之余,還是要加強本身對性能要求的意識。

https://developer.android.com/training/articles/perf-tips.html

還有1點,不要過早優(yōu)化!

相干瀏覽

Android 性能優(yōu)化:使用 Lint 優(yōu)化代碼、去除過剩資源

Android 性能優(yōu)化:多線程系列開篇

歡迎掃描關(guān)注我的微信公眾號 安卓進化論,1起成為更優(yōu)秀的 programmer (? ??_??)? !

這里寫圖片描述

Thanks

https://developer.android.com/studio/profile/traceview.html
https://code.google.com/p/android/issues/detail?id=38825
http://www.cnblogs.com/sunzn/p/3192231.html
https://gold.xitu.io/post/5874bff0128fe1006b443fa0

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 日韩免费久久 | 国产成人在线视频 | 黄色精品网站 | 国产综合精品一区二区三区 | 欧美视频日韩 | 亚洲精品不卡 | 国产青草视频 | 亚洲激情视频在线播放 | 免费看黄网 | 国产在线精品一区二区三区 | 日韩一级黄色毛片 | 久久在线播放 | 九九色在线观看 | 青青草av| 免费视频一区二区 | 亚洲一区二区三区影视 | 国产一区二区不卡 | 日韩国产一区在线 | 国产精品一区二区三区久久久 | av中文在线资源 | 这里只有精品久久 | 欧美成人午夜免费视在线看片 | 国产精品一区久久久 | 精品99在线 | 国产欧美精品一区二区色综合 | 成人综合av | 正在播放91 | 精品二区 | 综合久久综合久久 | 国产精品免费观看 | 激情中文字幕 | 秋霞电影天堂 | 成人久久久精品国产乱码一区二区 | 亚洲国产精品一区二区久久 | 久久都是精品 | 午夜精品久久久久久99热软件 | 中文字幕国产一区二区三区 | 免费国产视频 | 成人性生交大片 | 亚洲毛茸茸少妇高潮呻吟 | 日韩三区三区一区区欧69国产 |