我需要在我的应用程序中显示许多图片,这些图片是jpg和png格式的,我会像这样把它们加载到ImageView中:
tile.setImageResource(R.drawable.tile_highlight);
我目前遇到了OutOfMemory问题 (java.lang.OutOfMemoryError: bitmap size exceeds VM budget
)
我已经搜索并找到一些其他的文章,它们都建议你应该手动回收ImageView的位图,像这样:((BitmapDrawable)imageView.getDrawable()).getBitmap().recycle();
这将把它从内存中卸载。
但在我的情况下,因为我没有使用 setBitmap()
来加载图像到ImageView对象上,当我尝试运行上面的代码时,它返回NullPointerException
,更确切地说,方法getBitmap()
返回null,没有位图!?!
我需要回到我的代码并改变加载所有图像到ImageViews的方式,然后再尝试使用recycle()
方法吗?或者我如何释放内存,使其不再崩溃?
编辑
我尝试了这样的代码:imageView.setImageResource(-1);
希望它会从内存中删除图像并用... null或其他替换它,但似乎它并没有帮助解决问题。