Android 效能優化

2021-07-27 16:32:08 字數 2427 閱讀 3961

最近閒來拜讀了任玉剛大神的《android開發藝術探索》這本書,總結了幾點,方便以後查閱。

1、布局優化

儘量減少布局檔案 的層級,布局減少了那麼安卓繪製的工作就減少了;

方法:

1.1 盡量少採用relativelayout,因為relativelayout的計算量相對於linearlayout還是大的。但是如果linearlayout無法實現布局,需要增加層級,那麼還是使用relativelayout;framelayout 和linearlayout,都是高效的viewgroup;

1.2 採用include標籤和merge標籤和viewstub;

include標籤的使用方法:

以上**通過layout 將乙個布局檔案引用到這個布局中;提供的屬性有id,weidth,height;如果在屬性中指定了 android:layout_*,這種的屬性那麼我們就必須提供weidth,height這兩個屬性了。如果沒有使用就不需要提供這兩個屬性;

merge標籤的使用方法

xmlns:android=""

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="horizontal">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="登入"/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="登入"/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="登入"/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="登入"/>

merge>

通常我們都是使用include和merge這個兩個標籤來減少引用布局的層級,但是這裡有乙個缺陷,就是在引用布局中我們採用的是linearlayout布局,那麼我們在主布局中也是用的是linearlayout,當兩者的排列方向一致時沒有問題嗎,那麼當兩個不同時,merge中的空間顯示的使用會採用主布局檔案的方式來顯示,所以這時就產生了問題。

viewstub的使用

android:id="@+id/view_stub"

android:inflatedid="@id/import_lin"

android:layout="@layout/view_import"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

viewstub繼承自view,是非常輕量級的寬高都為0,不參與任何布局的計算過程,只需要在需要的時候載入,比如在網路請求失敗的時候顯示;

設定顯示的兩種方式

//設定viewstub顯示的兩種方式一:

findviewbyid(r.id

.view_stub).setvisibility(view.visible);

//方法二:

view viewbyid = ((viewstub)findviewbyid(r.id

.view_stub)).inflate();

暫時不支援merge標籤;

2、繪製優化

在ondraw中避免大量的操作;

2.1 不在ondraw方法中做大量的耗時操作,或者成千上萬的迴圈操作;

2.2 不在ondraw方法中創今年區域性變數;ondraw頻繁的被呼叫,會產生大量的臨時物件,增加cpu壓力,並且導致頻繁的gc;

3、記憶體洩漏優化

記憶體洩漏是我們經常不注意或者經常犯的錯誤,優化主要從兩個方面著手

a、開發中避免寫出記憶體洩漏的**

b、通過常見的記憶體洩漏檢測工具檢測出並且解決*

4.1 避免建立過多的物件;

4.2 不要過多的使用列舉;

4.3 常量使用static finial修飾;

4.4 適當的使用弱引用和軟引用;

4.5 盡量使用記憶體快取或磁碟快取;

4.6 盡量採用靜態內部類,避免因為內部類造成的記憶體洩漏;

Android效能優化

android效能優化 1.http用gzip壓縮,設定連線超時時間和響應超時時間 http請求按照業務需求,分為是否可以快取和不可快取,那麼在無網路的環境中,仍然通過快取的httpresponse瀏覽部分資料,實現離線閱讀。2.listview 效能優化 1 復用convertview 在geti...

Android效能優化

1.節制地使用service 如果應用程式當中需要使用service來執行後台任務的話,請一定要注意只有當任務正在執行的時候才應該讓service執行起來。另外,當任務執行完之後去停止service的時候,要小心service停止失敗導致記憶體洩露的情況 2.當介面不可見時釋放記憶體 當使用者開啟另...

Android效能優化

本篇主要是對 google推出的效能優化典範 進行乙個通篇的整理 主要在於一些具體的優化技巧 至於60fps 掉幀 gc 記憶體抖動 閾值 等等這些效能術語的概念裡面不做多概括,請自行查閱 本篇從以下幾點延伸擴充套件 systrace systrace 在android ddms 裡自帶,可以用來跟...