在我的应用程序中,我将一些位图图像存储在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;
}
}
答案 0 :(得分:0)
加载位图时读取像素并将这些信息存储在某处。 我不知道为什么你需要这些像素,但我可以建议你不将像素信息存储在更长的时间周期内,因为这真的吃内存。
答案 1 :(得分:0)
如果没有完整的源代码,很难说清楚。很可能你在多个地方使用相同的位图,比如ImageView和Holder类。如果要么导致循环,它将影响另一个,因为它们都引用同一个对象。如果您这样做,您可能希望使用bitmap.copy方法。