1. 程式人生 > >Android之開發者選項

Android之開發者選項

ViewHierarchy

可以來檢視安卓淘寶中的控制元件用的佈局,例如購物車用的是ExpandableListView 還是 Listview巢狀ListView。

--------------------------------------------------分割線--------------------------------------------------

1.Stay awake
充電時保持螢幕喚醒,開發的時候,時不時的鎖屏真是夠了,開啟它後只要插著USB線就不需要總去解鎖螢幕啦。

2.Select runtime(Dalvik or ART)
ART runtime下你的應用會更加絲滑,目前高版本的Android上已經直接是ART runtime了,但作為Android開發也許需要保證你的應用在兩種runtime下都能正常執行,這可能是測試時需要更多考慮的。

3.Process stats
裡面有關於當前執行程序的一切資訊,對於一般使用者,它就是一堆無意義的數字,對於Android開發人員來說,除錯時這些資訊也許可以幫你大忙。

4.USB debugging
這個無需介紹,不開它怎麼除錯呢?(雖然現在都流行無線除錯了)

5.Allow mock locations
當你的應用需要用到GPS功能,獲取位置資訊時(比如天氣應用),可以通過它搭配一些位置模擬應用,模擬全球任何地點。(還能幹什麼?機智的你肯定想到啦)

6.Show surface updates
在介面繪製時,閃爍提醒,開啟它後簡直能閃瞎你的眼睛,但有時候我們需要精確知道具體的介面繪製細節時,不得不需要忍受這種折磨。

7.Show layout bounds
顯示佈局格子,當你看到一個應用有很棒的介面效果,想知道它是怎麼佈局的?開啟這個功能即可。我更常用的使用場景是:每當有PM過來問我人家這個介面是Native實現的,還是類似Hybrid方案的Web實現時,我就讓他開啟這個功能,WebView是一個整體的格子,Native View是各種小格子組合而成。(除非自己重繪實現自定義View, 一般複雜佈局也不會這麼幹)

8.Force RTL layout direction
強制RTL佈局,RTL也就是Right To Left,阿拉伯國家一般有這種文化,類似古時候的中國,文字從右往左讀,包括介面佈局也是從右往左的,感覺操作習慣都跟我們是映象的,如果你跟我一樣不幸需要做這種坑爹適配的話,這也是必須掌握的技能。

9.Animation scale
動畫的尺度、速度調整也是很有用的功能,尤其在實現複雜的組合動畫效果時,調慢點可以看得更清楚,當然你可以在自己程式碼裡調慢,但每次改程式碼重新build很麻煩對不對?而且如果是PM走過來讓你研究一下某款App的酷炫動畫效果呢?

10.Simulate secondary displays
它允許你模擬不同螢幕尺寸下應用的表現,IDE裡雖然也有類似的功能,可那畢竟只是個靜態的效果。

11.Debug GPU overdraw

show GPU overdraw 用來優化佈局,防止出現view的層級過多。

Overdraw(過度繪製)描述的是螢幕上的某個畫素在同一幀的時間內被繪製了多次。在多層次的UI結構裡面,如果不可見的UI也在做繪製的操作,這就會導致某些畫素區域被繪製了多次。這就浪費大量的CPU以及GPU資源。
當設計上追求更華麗的視覺效果的時候,我們就容易陷入採用越來越多的層疊元件來實現這種視覺效果的怪圈。這很容易導致大量的效能問題,為了獲得最佳的效能,我們必須儘量減少Overdraw的情況發生。

這裡是指不正確的過度繪製:

  • 原色: 沒有過度繪製
  • 藍色: 一次過度繪製
  • 綠色: 兩次過度繪製
  • 粉色: 三次過度繪製
  • 紅色: 四次及以上過度繪製。
    值得提醒的是,過度繪製有時是無法避免的,Android建議是不要超過一次過度繪製,也就是可以是藍色的,不能綠了。

     

12.Strict mode enabled
嚴苛模式下,當應用做了一些影響效能的事情,螢幕會閃一下提醒你。你也可以在程式碼裡為自己的應用開啟嚴苛模式,一旦發現一些效能問題,就會有詳細Log輸出, 為避免影響線上使用者,建議只在Debug模式下開啟。

13.Show CPU usage

在你螢幕右上角顯示一個小視窗,提示當前CPU的各種資訊,在效能除錯時會有一些幫助,看是否是CPU的負載過高導致了效能問題。

14.Profile GPU rendering

選擇了這樣以後,我們可以在手機畫面上看到豐富的GPU繪製圖形資訊,分別關於StatusBar,NavBar,啟用的程式Activity區域的GPU Rending資訊。隨著介面的重新整理,介面上會滾動顯示垂直的柱狀圖來表示每幀畫面所需要渲染的時間,柱狀圖越高表示花費的渲染時間越長。

中間有一根綠色的橫線,代表16ms,綠線是效能流暢與否的底線,超過的時刻就會出現掉幀,我們需要確保每一幀花費的總時間都低於這條橫線,這樣才能夠避免出現卡頓的問題。介面效能調優的一個最重要指標就是將所有介面操作儘量優化到那條綠線以下。

每一條柱狀線都包含三部分,藍色代表測量繪製Display List的時間,紅色代表OpenGL渲染Display List所需要的時間,黃色代表CPU等待GPU處理的時間。

15.Don't keep activities

do not keep activities 用來檢查是否有一些狀態沒有儲存。開啟這個選項後,當你從Activity A跳轉到Activity B時,Activity A就會被立即銷燬,這一般用來模擬裝置記憶體不足時後臺Activity被銷燬的場景,如果你的應用能做到開啟它時功能仍基本正常,說明程式碼設計得比較合理,不同Activity之間的耦和很低,對於複雜業務的應用來說,能做到這點真心不容易。