Android 打开大量小图片时发生OutOfMemory错误
可能重复:Android 打开大量小图片时发生OutOfMemory错误,android,bitmap,Android,Bitmap,可能重复: 在我的应用程序中,我加载了一些我影响到ImageView的小位图(2k到300k之间),在我的应用程序第一次启动时,它工作正常,但当我退出并重新启动它时,在创建位图时,我总是出现OutOfMemory错误 有人能告诉我为什么吗?当您离开活动时,应该手动使用bitmap.recycle() 请参阅问题是因为位图的大小太大,VM无法处理。例如,从您的代码中,我可以看到您正在尝试将一个图像粘贴到imageView中,您正在使用照相机捕获该图像。因此,通常情况下,相机图像的大小将过大,这将
在我的应用程序中,我加载了一些我影响到ImageView的小位图(2k到300k之间),在我的应用程序第一次启动时,它工作正常,但当我退出并重新启动它时,在创建位图时,我总是出现OutOfMemory错误
有人能告诉我为什么吗?当您离开活动时,应该手动使用
bitmap.recycle()
请参阅问题是因为位图的大小太大,VM无法处理。例如,从您的代码中,我可以看到您正在尝试将一个图像粘贴到imageView中,您正在使用照相机捕获该图像。因此,通常情况下,相机图像的大小将过大,这将明显增加此错误。因此,正如其他人所建议的,您必须通过采样或将图像转换为更小的分辨率来压缩图像。例如,如果imageView的宽度和高度为100x100,则可以创建缩放位图,以便imageView完全填充。你可以这样做
Bitmap newImage = Bitmap.createScaledBitmap(bm, 350, 300,true);
你必须像这样回收你的位图并清空你的位图
Bitmap bmap.recycle();
Bitmap bmap=null;
我真的怀疑如果你将引用设为空,允许GC(但请证明我错了),你是否必须使用
bitmap.recycle()
我想说的是,很可能你的位图太大了,或者类似的东西 这种回答让我有点害怕。所以GC对位图不是很有用。谢谢!谢谢我真的不明白为什么安卓GC不把位图当作任何其他对象。。。