带有BitmapDrawable的HashMap不返回drawable

时间:2013-09-06 05:34:11

标签: android bitmap drawable android-drawable

我有像这样的HashMap

HashMap<String, BitmapDrawable> bitmapDrawables = new HashMap<String, BitmapDrawable>();

现在我有一个方法可以返回drawable:

public static BitmapDrawable getDrawable(String fileName, Context context,Bitmap bitmap) {
    BitmapDrawable drawable = bitmapDrawables.get(fileName);
    if (drawable == null) {
        drawable = convertBitmapToDrawable(bitmap, context);// will convert the bitmap to drawable
        bitmapDrawables.put(fileName, drawable);

    }
    return drawable;
    }

它工作正常但有时它不会返回正确的drawable,就像我有2个活动A和B,在Activity A中我有一个带有drawable set的按钮,现在我从A移动 - &gt; B然后回到A,那时drawable没有加载,但是当我触摸那个按钮时,drawable是可见的。

为什么会发生这种情况?,我已经删除了haspMap并正确检查了它的负载,当我从A-> B移动并返回A时,但如果我不使用Hashmap,则屏幕会出现延迟。

我以这种方式使用getDrawable():

button.setBackgroundDrawable(getDrawable(name,context,bitmap);

1 个答案:

答案 0 :(得分:0)

您可以使用

button.setBackgroundDrawable(getDrawable(name,context,bitmap)
方法onResume()中的

。顺便说一下,不推荐您的实现,会导致内存泄漏。有关详细信息,请参阅this