避免在android中自动回收位图

时间:2011-09-26 14:17:40

标签: android illegalstateexception

在我的应用程序中,我将一些位图图像存储在HashMap中。 将hashmap作为ImageHolder类的成员。 我需要在我的程序中使用HashMap中的图像来进一步处理图像。 当我运行我的应用程序时,位图图像会自动回收,我得到了

  

java.lang.IllegalStateException:无法在回收的位图上调用getPixels()。

请帮我避免自动回收位图图片。

以下是ImageHolder类的代码:

public class ImageHolder {

    private HashMap<String, Bitmap> mImageMap = null;

    public ImageHolder() {  
        mImageMap = new HashMap<String, Bitmap>();
    }
    /**
     * @return the mImageMap
     */
    public Map<String, Bitmap> getmImageMap() {
        return mImageMap;
    }
    /**
     * @param mImageMap the mImageMap to set
     */
    public void setmImageMap(HashMap<String, Bitmap> mImageMap) {
        this.mImageMap = mImageMap;
    }

}

2 个答案:

答案 0 :(得分:0)

加载位图时读取像素并将这些信息存储在某处。 我不知道为什么你需要这些像素,但我可以建议你将像素信息存储在更长的时间周期内,因为这真的内存。

答案 1 :(得分:0)

如果没有完整的源代码,很难说清楚。很可能你在多个地方使用相同的位图,比如ImageView和Holder类。如果要么导致循环,它将影响另一个,因为它们都引用同一个对象。如果您这样做,您可能希望使用bitmap.copy方法。