我需要在我的应用程序中显示许多图像。这些是 jpgs 和 pngs,我将它们加载到 ImageViews 中,如下所示:
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 或其他东西,但它似乎无济于事。