如何解決android中的圖片out of memory問題

android開發中,出現oom最多的情況是大圖片加載的時候。精細化的圖片可以很好的,帶動用戶的感觀,但是也帶來了不少的問題。這裡就來介紹一下,如何解決因為大圖片一起的out of memory問題。

方法/步驟

先介紹幾種圖片加載方法。

直接加載方法:

Bitmap img = BitmapFactory.decodeResource(activity.getResources(), R.drawable.image);

間接加載方法:

聲明對象:

Bitmap[] Logos = new Bitmap[2];

加載圖片:

loadDrawable(logos,0,this.getResources().getDrawable(R.drawable.img),200,100);

實現函數:

private void loadDrawable(Bitmap[] anibmp,int key, Drawable tile,int block_x,int block_y) {

Bitmap bitmap = Bitmap.createBitmap(block_x, block_y,

Bitmap.Config.ARGB_8888);

Canvas canvas = new Canvas(bitmap);

tile.setBounds(0, 0, block_x, block_y);

tile.draw(canvas);

anibmp[key] = bitmap;

}

這種方法,是構建一個drawable的圖片流。便於對於圖片操作。但是這樣也很容易,引起oom的問題。

對於問題的處理方法:

使用bitmap.recycle()清理圖片使用完後的結果。

處理代碼如下:

private void clearBitmap(){

for(int i=0; i<2; i++){

if(logos[i] != null && !logos[i].isRecycled()){

logos[i].recycle();

logos[i] = null;

}

}

本文內容整理自網絡, 文中所有觀點看法不代表淘大白的立場