我正在尝试从RAM中删除位图。但是当我使用System.gc()
时,它不会清理RAM,并且应用程序停止使用java.lang.OutOfMemoryError
异常。即使我使用
if((bitmap!=null)&&(!bitmap.isRecycled())){
bitmap.recycle();
bitmap=null;
}
仍然没有成功。 它清理RAM,但我不能再次使用回收的位图(我再次加载它但由于某些奇怪的原因不能使用它)。 有没有正确的方法从RAM中清除位图并在以后使用它?
编辑0:
加载位图:
temp=BitmapFactory.decodeResource(getResources(), R.drawable.bitmap);
bitmap=Bitmap.createScaledBitmap(temp, 100, 100, true);
答案 0 :(得分:2)
但是当我使用System.gc()时,它不会清理RAM,并且应用程序停止使用java.lang.OutOfMemoryError异常。
部分原因是you are fragmenting your heap。
它清理RAM,但我不能再使用回收的位图。
这是recycle()
。
有没有正确的方法从RAM中清除位图并在以后使用它?
再次加载位图。如果解决方案相同,请考虑using inBitmap
重用现有Bitmap
对象,而不是使用recycle()
和(毫无意义地)调用System.gc()
。另请考虑using inSampleSize
首先减少位图的内存使用量,方法是将分辨率更接近您想要显示的内容。