带有 BitmapDrawable 的 HashMap 不返回 drawable



>我有一个这样的哈希图

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

现在我有一个将返回可绘制对象的方法:

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;
    }

工作正常,但有时它不会返回正确的可绘制对象,就像我有 2 个活动 A 和 B,在活动 A 中我有一个设置了可绘制对象的按钮,现在我从 A -> B 移动,然后回到 A 那时可绘制对象没有加载,但是当我触摸该按钮时,可绘制对象是可见的。

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

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

button.setBackgroundDrawable(getDrawable(name,context,bitmap);
您可以使用

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

在方法onResume() .顺便说一句,不建议使用您的实现,这很容易导致内存泄漏。有关更多详细信息,请参阅此处

最新更新