gpt4 book ai didi

安卓。 OutOfMemory 问题

转载 作者:太空宇宙 更新时间:2023-11-03 12:00:06 26 4
gpt4 key购买 nike

我需要在我的应用程序中显示许多图像。这些是 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,没有位图 ?!?!

我是否需要返回我的代码并更改我在 ImageView 中加载所有图像的方式,然后尝试使用 recycle() 方法?或者我如何释放内存以使其不再崩溃?

编辑

我已经尝试过这样的事情:imageView.setImageResource(-1); 希望它能从内存中删除图像并将其替换为... null 或其他东西,但看起来它对事业没有帮助。

最佳答案

如果您可以发布一些代码,将会很有帮助。具体来说,就是如何设置 ImageView 对象的图像。如果您不使用位图,我希望 getBitmap() 将返回 null。但是,如果您使用另一种 Drawable 或以其他方式设置图像,则可能会采用不涉及位图的类似方法。

编辑:

好的,试一试。您可以从这样的资源创建一个位图:

Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.image);

然后,像这样使用位图,考虑到 img 是您的 ImageView:

img.setImageBitmap(bm);
//Do some stuff with it, then when memory gets low:
((BitmapDrawable)img.getDrawable()).getBitmap().recycle();

当然,这是考虑到你在 Activity 中。否则,您必须处理上下文并将 getResources() 替换为 context.getResources()

关于安卓。 OutOfMemory 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11543326/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com