在我的应用程序中,当通过Drawable资源改变图片时,内存消耗增加并且它没有被释放,然后用户得到一个OutOfMemoryError错误。如何从旧的可绘制图像中释放资源
if (sb.equals("pic1")) {
rrr1 = ResourcesCompat.getDrawable(getResources(), R.drawable.pic1, null);
relativeLayout1.setBackground(rrr1);
} else if (sb.equals("pic2")) {
rrr2 = ResourcesCompat.getDrawable(getResources(), R.drawable.pic2, null);
relativeLayout1.setBackground(rrr2);
}
嗯,没错 - 您更改了背景,链接 (
rrr1
) 将其保存在内存中。使用局部变量而不是字段:这样的链接将仅存在于块内,
if {...}
并且在退出它时,Drawable
将仅由小部件持有。当您将其更改为另一个时,它将可供垃圾收集器使用。