最近閒來拜讀了任玉剛大神的《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 裡自帶,可以用來跟...