Android性能優(yōu)化

布局優(yōu)化:
布局優(yōu)化的思想就是減少布局文件的層級。

<include>標(biāo)簽:將一個指定的布局文件加載到當(dāng)前的布局文件。
<include>標(biāo)簽只支持以 **android:layout_ **開頭的屬性,其他不支持,id 除外。

<merge>標(biāo)簽:一般與<include>標(biāo)簽一起使用減少層級。由于當(dāng)前布局是一個豎直方向的 LinearLayout,這時候如果被包含的布局文件也采用豎直方向的 LinearLayout,那么顯然被包含的 LinearLayout 是多余的,這時候可以通過<merge>標(biāo)簽去掉多余的那一層 LinearLayout。

ViewStub:繼承了 View,且寬高為 0,因此本身不參與任何的布局和繪制。意義是加載所需的布局文件。比如,網(wǎng)絡(luò)異常時的界面,在正常情況下是不顯示的,那么就可以通過 ViewStub 做到在使用的時候再加載。

<ViewStub
   android:id="@+id/stub_import"
   android:inflatedId="@+id/panel_import"
   android:layout="@layout/layout_network_error"
   android:layout_width="match_parent"
   android:layout_height="wrap_parent"
   android:gravity="bottom"/>

在需要加載 ViewStub 中的布局時,可以這樣:

((ViewStub)findViewById(R.id.stub_import)).setVisibility(View.VISIBLE);

或者

View importPanel = ((ViewStub)findViewById(R.id.stub_import)).inflate();

繪制優(yōu)化:
繪制優(yōu)化是指 View 的 onDraw 方法要避免執(zhí)行大量的操作。

  1. onDraw 中不要創(chuàng)建新的局部對象,因為 onDraw 方法可能會被頻繁調(diào)用。
  2. onDraw 中不要做耗時任務(wù),也不能執(zhí)行成千上萬次的循環(huán)。

內(nèi)存泄漏優(yōu)化:
場景1:靜態(tài)變量導(dǎo)致的內(nèi)存泄漏。

場景2:單例模式導(dǎo)致的內(nèi)存泄漏。
場景3:屬性動畫導(dǎo)致的內(nèi)存泄漏。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容