Android性能優(yōu)化

Android性能優(yōu)化

布局優(yōu)化

Android UI渲染機制

人眼所感受到的流暢畫面,需要畫面的幀數(shù)達到40-60幀每秒;很多PC畫面黨應該都了解,最佳fps大概在60fps左右也是評價一款顯卡的性能指標之一;就比如你玩LOL英雄聯(lián)盟右上角的fps是多少,一般斗魚上主播的都在200以上,一般筆記本是40-100之間吧。

在Android中,系統(tǒng)通過VSYNC型號觸發(fā)對UI的渲染、重繪,期間各時間是16ms其實就是1000ms中顯示60幀畫面的單位時間,即1000/60。如果系統(tǒng)每次渲染時間都在16ms內(nèi)那么就不會有卡頓,如果超過,就會停止繪制,等待下一個信號才開始繪制,這樣就會出現(xiàn)卡頓。

  1. 優(yōu)化布局層級:在Android系統(tǒng)中都是通過遍歷View數(shù)來繪制的,降低View樹的高度。早期Android默認布局是LinearLayout,而現(xiàn)在是扁平化的RelativeLayout

  2. 避免嵌套過多的無用布局:選用適合的Layout,不要使用一種layout造成嵌套過多的情況。

  3. 使用<include>標簽重用Layout:高效利用不解釋

  4. 使用ViewStub實現(xiàn)View的延時加載:
    viewstub標簽同include標簽一樣可以用來引入一個外部布局,不同的是,viewstub既不會繪制也不會占用位置,也不會初始化。兩種方法讓它顯示出來:

    • VISIBLE: 調(diào)用mViewStub.setVisibility(View.VISIBLE);
    • inflate:View inflateView = mViewStub.inflate();
  5. Hierarchy Viewer:工具優(yōu)化,用在模擬器上,自行百度

內(nèi)存優(yōu)化

什么是內(nèi)存?

  • 寄存器(Register):在CPU內(nèi)部,速度最快的存儲場所,開發(fā)者不可控制
  • 棧(Stack):放創(chuàng)建對象的引用,對象本身放在堆中
  • 堆(Heap):放new 創(chuàng)建的對象和數(shù)組,在堆中分配內(nèi)存,由Java虛擬機GC回收
  • 靜態(tài)存儲區(qū)域(Static Field):在固定的位置存放應用程序運行時一直存在的數(shù)據(jù),Java在內(nèi)存中專門劃分了一個靜態(tài)存儲區(qū)域來管理一些數(shù)據(jù)變量,例如靜態(tài)的變量
  • 常量池(Constant Pool):常量池中除了包含代碼中所定義的各種基本類型(如int、long等等)和對象型(如String及數(shù)組)的常量值外,還包含一些以文本形式出現(xiàn)的符號引用

所謂的內(nèi)存分析就是指分析Heap的大小,可由如下代碼所獲取。

    ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
    int heapSize = manager.getLargeMemoryClass();
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,455評論 25 708
  • 注意事項: 布局優(yōu)化;盡量使用include、merge、ViewStub標簽,盡量不存在冗余嵌套及過于復雜布局(...
    HarryXR閱讀 5,259評論 1 19
  • 周星馳的電影《功夫》里面借火云邪神之口說出了一句至理名言:“天下武功,唯快不破”。 在移動互聯(lián)網(wǎng)時代,同樣如此,如...
    lipy_閱讀 984評論 0 2
  • 本文同時發(fā)布在CSDN上,歡迎查看 1. 前言 隨著最近幾年移動市場蓬勃發(fā)展,引來大批人員投入到Android、I...
    大圣代閱讀 5,124評論 7 44
  • 我一直覺得如果我的努力得不到回報就去死。這只是夸張說法。本義就是說,我覺得,我努力了一定會有回報,如果沒有回報那就...
    六便士與TT閱讀 165評論 0 0