1

在我的应用程序中,我将一些位图图像存储在 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;
    }

}
4

2 回答 2

0

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

于 2011-09-26T14:24:25.547 回答
0

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

于 2011-09-26T14:31:03.880 回答