引言
最近在做多圖片編輯的功能沐旨,需要在圖片編輯之前做一些預(yù)處理,包含旋轉(zhuǎn)榨婆、縮放磁携、裁剪,這個(gè)處理過程是通過Bitmap相關(guān)的操作完成的纲辽,因此會(huì)造成大量的內(nèi)存使用颜武,從而出現(xiàn)OOM問題,這里記錄一下相關(guān)的處理方法拖吼。
相關(guān)操作
- 處理完每一張圖片后,調(diào)用Bitmap.recycle(),將生成的Bitmap及時(shí)回收这吻;
- Bitmap預(yù)處理吊档,根據(jù)需求和圖片大小,在加載生成Bitmap時(shí)唾糯,通過BitmapFactory.Options.inSampleSize做一些縮放處理怠硼,減少內(nèi)存占用
- 圖片處理完成后調(diào)用System.gc(),Sysem.runFinalization()通知垃圾收集器。
- 在處理每張圖片前移怯,檢測當(dāng)前內(nèi)存香璃,內(nèi)存過小,則停止當(dāng)前操作舟误,提示用戶葡秒,相關(guān)方法
long memory = Runtime.getRuntime().maxMemory();
long totalMemory = Runtime.getRuntime().totalMemory();
long freeMemory = Runtime.getRuntime().freeMemory();
long curMemory = (memory - (totalMemory - freeMemory)) / 1024 / 1024;
- Bitmap改用軟引用,替換第1點(diǎn)的recycle方法亦可。