本篇從多個部分分析性能優化(更新中。。。):數據庫
常見的內存問題:內存泄漏 + OOM(內存溢出)。
內存泄漏:對象使用完沒有釋放,也就是內存再也不使用了可是 GC 卻不回收。
OOM:內存佔用超過了 Android 系統給 app 分配的最大內存。緩存
其中,內存泄漏若是一直增大也會形成 OOM。性能優化
會形成:卡頓
緣由有:網絡
如線程、AsyncTask、Handler 持有了 Activity 引用,當 Activity 銷燬時,線程任務沒有處理完,繼續運行。那麼 Activity 對象就不會被回收。
解決辦法:app
待完善...ide
集合使用完,清空。佈局
除了內存泄漏會形成 OOM,部分低端設備內存小,Bitmap 也是一個常見緣由。儘量減小 Bitmap 的內存佔用。性能
對於低端設備,能夠關閉複雜的動畫、使用 565 格式圖片、使用更小的緩存。
設備分級策略:device-year-class 會根據手機的內存、CPU 核心數和頻率等信息決定設備屬於哪個年份。學習
對圖片進行緩存優化
三級緩存機制:內存緩存、本地緩存、網絡緩存。
使用 Glide 庫加載圖片,Glide 對處理圖片作了不少方面優化(LruCahce、DiskLruCache、生命週期集成、Bitmap 複用和主動回收等);
屏幕上某個像素,在同一幀的時間內,被繪製屢次。
使用 OpenGL 繪圖(這個學習成本高)。