內(nèi)存溢出系列文章(二) - 避免內(nèi)存溢出及優(yōu)化

內(nèi)存溢出系列文章
內(nèi)存溢出系列文章(一) - 內(nèi)存溢出定義及原因
內(nèi)存溢出系列文章(二) - 避免內(nèi)存溢出及優(yōu)化

1. 避免內(nèi)存溢出及優(yōu)化


1>:在一個類中,如果多個地方都需要用該對象,可以事先在一個地方寫好,然后在需要使用的地方直接使用;
2>:盡量少用 枚舉Enum,因為枚舉占用的空間是普通常量的2倍;
3>:數(shù)據(jù)小于1000,建議使用ArrayMap、SparseArray,比較高效,數(shù)據(jù)大于1000,就用 HashMap;
4>:對于bitmap需要壓縮,使用LruCache三級緩存
a:inSampleSize:縮放比例,把圖片加入內(nèi)存之前,需要先計算一個合適的縮放比例,不要把大圖加入;
b:decodeFormat:解碼格式,選擇ARGB_8888/RBG_565/ARGB_4444/ALPHA_8;
5>:加載小的圖片,不要加載大的圖片,有時候一張很大圖片被xml文件加載會因為內(nèi)存不足而拋出 InflationException;

6>:在用ListView、GridView時,要從3個方面優(yōu)化,復用convertView、寫一個ViewHolder、分頁加載;
7>:給ListView、RecyclerView加載圖片時,使用Glide、Picasso等第三方加載工具;
8>:在自定義View中,盡量避免在 onDraw()中創(chuàng)建對象;
9>:需要拼接字符串時,盡量用StringBuffer、StringBuilder,而不要使用 "+";
10>:布局不要嵌套太深;

11>:盡量不要使用background背景,如果需要使用,可以給最頂層的根布局設置 background,不要給根布局和子布局同時設置 background;
12>:盡量少用第三方庫文件;
13>:盡量少使用多線程;
14>:使用ProGuard剔除無用代碼;
15>:使用Service時,當任務執(zhí)行完畢后就盡快調(diào)用 stopService() 停止服務,或者直接用 intentService,它的特點是,在子線程完成耗時操作后會自動停止并結束自身;

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

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

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