記得看文章三部曲,點贊,評論,轉發。 微信搜索【程序員小安】關注還在移動開發領域苟活的大齡程序員,「面試系列」文章將在公衆號同步發佈。java
經過面試官問我:Andriod中子線程爲何不能更新UI?成功斬獲offer的天才少年_逐漸膨脹,今天準備準備去大廠試一下。android
天才少年_來到一家大廠等待面試,上家公司萌妹子面試官讓我久久不能忘記,不知道今天的面試官是什麼樣子。
一個眼睛更大更亮,超級可愛的小姐姐,站在我面前,居然比昨天的面試官更蠢萌,今天看天才少年如何把她帶回家,什麼鬼,是把offer帶回家。程序員
小夥子,據說你是來面試的,我是今天的面試官,你先介紹一下你本身吧。面試
我叫【天才少年_】,男,30未婚,家裏有車有房,個人優勢是英俊瀟灑,個人座右銘是:既往不糾結,縱情向前看,繼續努力。shell
額,你這介紹,怎麼感受是來相親的。微信
果真面試官已經被我英俊的外表深深吸引,不能自拔,嗯,萌萌的外表都是不太聰明的樣子,今天面試有但願啦,我心中一陣暗喜。
臥槽,連開場語都是如出一轍。(實際是我懶,直接從上篇抄過來的)markdown
你好,跟我說下Android APP中如何測試FPS?app
嘿嘿,還好我有準備,看我如何裝逼。 oop
2)測試步驟:
1.Android手機經過USB鏈接電腦。
2.打開手機「設置」-「更多設置」-「開發者選項」-「GPU呈現模式分析」,選中「在adb shell dumpsys gfinfo」中,如圖所示:
部分手機可能路徑不一樣,下圖爲個人手機的路徑截圖。 post
com.victor.intercitycarpool/com.victor.intercitycarpool.ui.account.RegisterOneActivity/android.view.ViewRootImpl@176c16e7 (visibility=0) Draw Prepare Process Execute 0.00 0.75 77.86 2.69 0.00 0.61 4.52 1.65 0.00 0.30 84.77 2.03 0.00 0.18 3.52 2.98 0.00 0.32 3.08 2.52 0.00 0.46 3.05 2.22 0.00 0.14 3.06 2.09 0.00 0.14 3.28 2.32 0.00 0.26 4.18 2.33 0.00 0.15 8.69 14.54 0.00 0.15 4.87 3.21 0.00 0.21 9.58 6.59 0.00 1.49 26.28 3.37 0.00 0.21 6.55 4.59 0.00 2.54 3.81 15.24 0.00 0.20 5.22 2.00 0.00 7.30 4.48 8.07 0.00 0.79 11.45 6.47 0.00 0.20 4.49 2.14 0.00 0.72 3.29 2.78 0.00 1.36 4.14 1.83 0.00 0.38 2.83 2.17 0.00 0.46 3.49 4.52 0.00 0.61 3.68 2.25 0.00 0.37 2.85 2.89 0.00 0.63 3.92 2.37 0.00 0.47 3.28 2.00 0.00 0.42 3.33 2.10 0.00 0.33 2.49 2.27 0.00 0.14 2.79 2.35 0.00 0.13 2.73 2.49 0.00 0.21 3.11 2.26 0.00 0.13 3.60 2.25 0.00 0.13 2.61 2.33 0.00 0.13 2.54 2.36 0.00 0.22 4.20 2.59 0.00 0.13 2.80 2.26 0.00 0.14 2.72 2.27 0.00 0.13 2.76 2.22 0.00 0.22 3.47 2.27 0.00 0.14 2.76 2.35 0.00 0.11 2.28 2.09 0.00 0.11 2.28 1.87 0.00 0.21 2.62 2.37 0.00 0.12 2.16 2.26 0.00 0.11 2.05 1.89 0.00 0.10 2.00 1.81 0.00 0.16 1.89 2.72 0.00 0.11 2.96 2.68 0.00 0.27 5.19 1.86 0.00 0.16 3.06 3.42 0.00 0.38 3.16 4.50 0.00 0.36 86.55 2.64 0.00 0.22 4.75 4.48 0.00 0.22 4.03 2.76 0.00 0.16 4.36 3.84 0.00 0.15 3.53 2.40 0.00 0.15 3.44 3.42 0.00 0.31 5.62 2.18 0.00 0.16 37.08 2.01 0.00 0.16 3.81 2.70 0.00 0.21 3.49 2.51 0.00 0.15 3.74 2.48 0.00 0.15 3.39 2.26 0.00 0.24 4.75 2.45 0.00 0.15 3.50 2.31 0.00 0.15 3.80 6.01 0.00 0.31 3.81 2.15 0.00 0.89 9.96 1.83 0.00 0.18 19.71 2.27 0.00 0.30 36.29 2.05 View hierarchy: com.victor.intercitycarpool/com.victor.intercitycarpool.ui.account.RegisterOneActivity/android.view.ViewRootImpl@176c16e7 24 views, 31.83 kB of display lists 複製代碼
贈送一個知識點:
Draw: 建立顯示列表(display lists,記錄全部view對象的繪製指令)的時間開銷。
Process: 執行顯示列表中繪製指令的時間。UI視窗中的View數量越多,須要執行的繪畫命令就越多。
Execute : 將一幀圖像交給合成器compostior的時間。這部分佔用的時間一般比較少 而prepare在一些舊adb版本中是算在process上,就是指從建立顯示列表到執行顯示列表的這一段準備時間的開銷
Draw + Prepare+Process + Execute = 完整顯示一幀 ,這個時間要小於16ms才能保證每秒60幀,即fps爲60,纔不會出現卡頓。
7.純數字看着不直觀,上才藝:
把數據導入到excel表格中,生成折線圖:
可見,我測試的APP的顯示一幀的時間基本都是小於10,暫時不須要優化,天才寫的代碼果真沒有問題。
那有看過主流APP的fps是多少嗎?好比淘寶,京東,拼多多
固然看過啊,大廠主app是我學習的方向標。
小夥子分析得很不錯,只是今天有點晚了,TraceView的使用我尚未來得及問,我們明天繼續。
其實我不介意晚上單獨面試的,嘿嘿。 未完待續~~
微信搜索【程序員小安】「面試系列(java&andriod)」文章將在公衆號同步發佈。