>我有一个这样的哈希图
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()
.顺便说一句,不建议使用您的实现,这很容易导致内存泄漏。有关更多详细信息,请参阅此处