Android性能優化

15.1.1 布局優化

  • <include> 標簽:減少代碼量

  • <merge>標簽:一般和 <include> 標簽一起使用從而減少布局的層級。

  • <ViewStub>標簽:ViewStub 繼承了 View,它非常輕量級且寬高都是0,正常情況下不會顯示

<ViewStub
        android:id="@+id/stub_import"
        android:inflatedId="@+id/panel_import"
        android:layout="@layout/layout_network_error"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

兩種加載方式

((ViewStub) findViewById(R.id.panel_import)).setVisibility(View.VISIBLE);
 View viewStub = ((ViewStub) findViewById(R.id.panel_import)).inflate();

使用場景比如:網絡出錯時顯示。

15.1.2 繪制優化

繪制優化指 View 的 onDraw 方法要避免執行大量的操作;

  • 不要在 onDraw 中創建對象,因為 onDraw 會被頻繁調用

  • 不要在 onDraw 中做耗時任務。

15.1.3 內存泄漏優化

場景1:靜態變量導致的內存泄漏

public class MainActivity extends Activity {
    private static Context sContext;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        sContext = this;
    }
}

上面代碼會導致 Activity 無法正常銷毀,因為靜態變量應用了它。

場景2:單例模式導致的內存泄漏

單例模式的生命周期與 Application 一致。

場景3:屬性動畫導致的內存泄漏

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容