天天看點

Android性能優化

Android性能優化

按:

App的體積越來越大,App的功能越來越多,面臨同一個問題,原有的App可能不适合現在的使用者使用。基于“不要過早優化”的原則,在早期快速疊代回報确定正确的方向之後,是時候做一些優化了。

性能優化,需要在使用者的角度來思考。使用者了解的“性能”是快:快速打開頁面,快速找到我想要的内容,頁面的切換流程,等等。

從三個次元來談性能優化:

        1,  技術層面(主動)

            1-1 UI的優化應該分為三個層面來談:

                     一個是簡潔的UI代碼

                     一個是較少的UI層數。

                     一個是具體view的渲染過程速度

        2,  工具層面(被動)

        3,  産品層面(主動)

一,基本技術原理篇

    1,  UI線程減少耗時操作

    2,  View層級減少(将線性布局轉換為相對布局)

    3,  ViewStub

    4,  Merge

    5,  Include

    6,  Style

二,工具檢測篇

   1,StrictMode

             1-1安卓2.3之後出現

             1-2用途

         探測UI線程進行的阻塞操作(網絡/資料庫查詢)

             1-3輸出

             Log

             1-4連結

              http://developer.android.com/reference/android/os/StrictMode.html

  2,Systrace

           2-1 安卓4.1之後

           2-2 用途

                  2-2-1分析app的性能,通過分析本應用程序和其他系統程序的執行時間。

                  2-2-2可以很容易分析出你的程式在UI線程的哪些函數占用了過多的時間

           2-3 輸出

           通過分析android核心資訊(CPU scheduler, disk activity, and application threads ),輸出Html網頁

           2-4 連結

                   http://developer.android.com/tools/help/systrace.html

      2-5 其他參考資料

          http://blog.csdn.net/rogeryi/article/details/8242250

      2-6 局限性

          必須在linux下運作

   3,  Traceview

                3-1 用途:

                      分析app具體方法執行所耗費app的cpu,執行時長

        3-2  輸出

  3-2-1 timeline panel 按照方法執行的先後時間順序排列,寬度代表耗時

  3-2-2 profile panel 方法棧關系,及占用cpu,時間的具體值和比例

        3-3  連結

            http://developer.android.com/tools/debugging/debugging-tracing.html

        3-4  其他參考

            http://www.open-open.com/lib/view/open1370251009945.html

   4,  dumpsys gfxinfo

        4-1檢視掉幀的情況,一般情況下1秒鐘是60幀會保證流程,即一幀的渲染時間不超過16ms

        4-2 reference:http://www.tuicool.com/articles/ZzmYFf(重要)

   5,  hierarchy viewer

       從整個View的圖中,會有三個點,代表onMeasure onLayout onDraw效率,這樣就可以看到拖累 加載速度的view,并且知道在View的那個步驟拖累了效率。

參看:http://developer.android.com/tools/debugging/debugging-ui.html

三,互動産品篇

    1,  進度條的顯示

    2,  歡迎界面

    3,  重構導航

        3-1 從Tab到Drawser的轉換

    4,  插件化

    5,  功能定制化(eg,微信選擇功能)

四,參考文檔

    1,  http://www.yixieshi.com/it/16683.html

    2,  http://developer.android.com/tools/debugging/debugging-ui.html

    3,  http://www.oschina.net/question/195301_32202

    4,  http://blog.venmo.com/hf2t3h4x98p5e13z82pl8j66ngcmry/performance-tuning-on-android

    5,  http://www.uisdc.com/5-ways-to-slim-app