Android載入圖片導致記憶體溢位(Out of Memory異常)
InputStream is = this.getResources().openRawResource(R.drawable.pic1);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = false;
options.inSampleSize = 10; // width,hight設為原來的十分一
Bitmap btp = BitmapFactory.decodeStream(is, null, options);
/**
* 以最省記憶體的方式讀取本地資源的圖片
* @param context
* @param resId
* @return
*/
public static Bitmap readBitMap(Context context, int resId){
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inPreferredConfig = Bitmap.Config.RGB_565;
opt.inPurgeable = true;
opt.inInputShareable = true;
// 獲取資源圖片
InputStream is = context.getResources().openRawResource(resId);
return BitmapFactory.decodeStream(is, null, opt);
}
if(imageView != null && imageView.getDrawable() != null){
Bitmap oldBitmap = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
imageView.setImageDrawable(null);
if(oldBitmap != null){
oldBitmap.recycle();
oldBitmap = null;
}
}
// Other code.
System.gc();
BitmapFactory.Options opts = new BitmapFactory.Options();
// 設定inJustDecodeBounds為true
opts.inJustDecodeBounds = true;
// 使用decodeFile方法得到圖片的寬和高
BitmapFactory.decodeFile(path, opts);
// 列印出圖片的寬和高
Log.d("example", opts.outWidth + "," + opts.outHeight);
private final static float TARGET_HEAP_UTILIZATION = 0.75f;
// 在程式onCreate時就可以呼叫
VMRuntime.getRuntime().setTargetHeapUtilization(TARGET_HEAP_UTILIZATION);
private final static int CWJ_HEAP_SIZE = 6 * 1024 * 1024 ;
VMRuntime.getRuntime().setMinimumHeapSize(CWJ_HEAP_SIZE); // 設定最小heap記憶體為6MB大小。
相關文章
- JAVA記憶體區域與記憶體溢位異常Java記憶體溢位
- Android有效解決載入大圖片時記憶體溢位的問題Android記憶體溢位
- Android圖片記憶體溢位的解決方案Android記憶體溢位
- android 載入圖片輕鬆避免OOM(out of memory)AndroidOOM
- Android-Fragment 切換造成記憶體溢位,導致記憶體增長AndroidFragment記憶體溢位
- Java記憶體溢位(OOM)異常完全指南Java記憶體溢位OOM
- JVM(2)-Java記憶體區域與記憶體溢位異常JVMJava記憶體溢位
- JVM系列之實戰記憶體溢位異常JVM記憶體溢位
- Javascript記憶體溢位,FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memoryJavaScript記憶體溢位ErrorASTAI
- Java 常見記憶體溢位異常與程式碼實現Java記憶體溢位
- Android 棧記憶體溢位bug fix小記(pthread_create (1040KB stack) failed: Out of memory)Android記憶體溢位threadAI
- Nuxtjs node memory 記憶體溢位問題UXJS記憶體溢位
- 記一次記憶體溢位導致的生產事故記憶體溢位
- Android記憶體溢位分析Android記憶體溢位
- 異常、堆記憶體溢位、OOM的幾種情況記憶體溢位OOM
- Java記憶體區域與記憶體溢位異常(JVM學習系列1)Java記憶體溢位JVM
- 第二章 Java記憶體區域與記憶體溢位異常(1)Java記憶體溢位
- Android圖片載入記憶體佔用分析Android記憶體
- Java記憶體區域與記憶體溢位異常 - 執行時資料區Java記憶體溢位
- Java棧溢位|記憶體洩漏|記憶體溢位Java記憶體溢位
- 記憶體溢位記憶體溢位
- 異常連線導致的記憶體洩漏排查記憶體
- 記一次Orika使用不當導致的記憶體溢位記憶體溢位
- 深入理解JVM讀書筆記一: Java記憶體區域與記憶體溢位異常JVM筆記Java記憶體溢位
- Java虛擬機器01——Java記憶體資料區域和記憶體溢位異常Java虛擬機記憶體溢位
- 深入理解Java虛擬機器-Java記憶體區域與記憶體溢位異常Java虛擬機記憶體溢位
- Java記憶體溢位Java記憶體溢位
- JBOSS記憶體溢位記憶體溢位
- 為什麼 Go 中有的自定義 error 會導致記憶體溢位GoError記憶體溢位
- 記憶體溢位:native溢位 和 上層溢位記憶體溢位
- 線上排查:記憶體異常使用導致full gc頻繁記憶體GC
- Android記憶體溢位、記憶體洩漏常見案例分析及最佳實踐總結Android記憶體溢位
- Xamarin Android提示記憶體溢位錯誤Android記憶體溢位
- android防止記憶體溢位淺析(一)Android記憶體溢位
- android防止記憶體溢位淺析(二)Android記憶體溢位
- 記憶體溢位和記憶體洩露記憶體溢位記憶體洩露
- 記憶體洩漏和記憶體溢位記憶體溢位
- WebLogic: 記憶體溢位Web記憶體溢位