Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android性能優化Google課程翻譯

Android性能優化Google課程翻譯

編輯:關於Android編程

Context:

我自己寫下Google關於Android性能優化的視頻課程的翻譯,希望轉載者不要刪除我的博客地址http://blog.csdn.net/zhjali123

術語:

1.texture、meshes。舉個例子,做一個飛機模型,你要先雕刻出立體的飛機模型(mesh),但是模型還沒有上色,這是你要用張紙把它包起來,在上面畫迷彩,這層有迷彩的紙就是(texture,中文叫紋理)。

 

Lesson1:Render(渲染)

1.Android設備通常16ms 更新下Activity,具體取決於手機硬件。這意味著你要在16ms內處理你所有的繪畫邏輯。如果你錯過了這個16ms,頁面不會繪制,這就叫做 dropped frame。然而動畫的運算並不會停止,所以呈現給用戶的就是在平滑性上發生了跳躍。這就叫做laggy或者janky體驗。

2.Android的渲染通道分為兩個關鍵區域:CPU和GPU。

CPU(measure測量-->layout布局--->record記錄--->execute執行)---->GPU(rasterization光柵化:計算每一個像素點的值)

CPU的問題:不必要的layout,視圖層次(View Hierachy)中無意義的計算、拆分(torn down)、重建(rebuilt)

XML轉換到屏幕顯示的原理過程:

XML----轉換---->Screen,核心步驟:rasterization光柵化(如圖)。Rasterization是非常的消耗資源,所以上個世紀90年代引入了單獨的圖像處理單元GPU。GPU使用一些指定的基礎指令集(set of primitive: polygons多邊形,textures 文理,images 圖像),而CPU在畫東西到屏幕前,會給GPU輸入這些指令(a set of primitive)。這一過程通常使用的API就是Android的OpenGL ES。

這意味著如果畫一個button,他會在CPU中先轉化為polygons多邊形、texture紋理((computer graphics) An image applied to a polygon to create the appearance of a surface:圖像被添加到一個多邊形上來創造事物的外觀)------------》傳遞給GPU進行rasterization光柵化。

其中有兩處耗時操作:

1.在CPU中將button等事物 轉換成相應的形狀(polygons),繪制它的表面(texture)

2.CPU將數據傳送GPU

對應措施:

你要減少CPU中繪制的事物和CPU往GPU上載數據,而OpenGL ES提供了向GPU上傳數據和保存數據的API。所以,當你下次繪制一個button時,你只需要在GPU中引用它(也就是在GPU中完成polygons、texture),告訴OpenGL如何進行繪制它。一條經驗之談就是:優化渲染的性能意味著,盡可能快的上傳數據到GPU和在GPU上盡可能長的保留數據。

從HoneyComb版本開始,整個View的渲染就在GPU中,並不斷優化,所以你不用關心這個。例如:任何你的theme提供的資源如Bitmaps、Drawables等,被整合到一個單獨的texture(感覺就是事物表面的意思)中,然後使用meshes上傳到GPU像是點9圖。這樣每次你需要繪制這些資源時,你就不用做任何轉換,他們已經存儲在GPU中了。

然而隨著UI事物更加先進,繪制流程也更加復雜。例如繪制一個image,這意味著上傳Image到CPU再到GPU。使用Path則完全不同,你需要在CPU中創建一連串的polygons多邊形,甚至在GPU中創建masking texture(蒙版紋理)來定義path。繪制字符,首先你必須在CPU中將繪制image---》上傳到GPU---》在屏幕上繪制每一個字符串中字符的正方形,這些都被Android系統所處理。而這存在程序員都會遇的GPU問題OverDraw(過度繪制)

 

今天晚上在繼續翻譯吧!

\

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved