2012-09-13 80 views
0

我在我的應用程序中使用位圖。在我使用它們之後,我將它們回收並設置爲null。儘管我這麼做了,但在分配跟蹤器中,我可以看到位圖分配沒有被釋放。它使我的應用程序崩潰...位圖內存不足異常

+0

請給我一部分SOURSE代碼時創建和resycle位圖和日誌。 –

+0

他們可能被引用某處 – njzk2

+0

何時你會得到這個內存內存錯誤,在調整大小或轉換成位圖時。 – Aerrow

回答

0

此代碼來你過來內存問題,我用這個代碼時,我調整位圖的一部分,

public Bitmap custom_SizedImage(String intent_data2) { 

     Options options = new Options(); 
     options.inJustDecodeBounds = true; 
     BitmapFactory.decodeFile(intent_data2, options); 
     double sampleSize = 0; 
     Boolean scaleByHeight = Math.abs(options.outHeight - targetHeight) >= Math 
       .abs(options.outWidth - targetWidth); 

     if (options.outHeight * options.outWidth * 2 >= 1638) { 
      sampleSize = scaleByHeight ? options.outHeight/targetHeight 
        : options.outWidth/targetWidth; 
      sampleSize = (int) Math.pow(2d, 
        Math.floor(Math.log(sampleSize)/Math.log(2d))); 
     } 
     options.inJustDecodeBounds = false; 
     options.inTempStorage = new byte[128]; 
     while (true) { 
      try { 
       options.inSampleSize = (int) sampleSize; 
          // here you can do you Decode process 
       //mBitmap = BitmapFactory.decodeFile(intent_data2, options); 

       break; 
      } catch (Exception ex) { 
       try { 
        sampleSize = sampleSize * 2; 
       } catch (Exception ex1) { 

       } 
      } 
     } 
     return scaledBitmap; 

    }