BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 3; // If number equals 3, it is only showing one third of all pixels. May crash if you are using 2, but 2 works in most cases.
Bitmap bMap = BitmapFactory.decodeFile((sdcard/exaple_file)), options);
Drawable d =new BitmapDrawable(bMap);
myLinearLayout.setBackgroundDrawable(d);
在onPause中:
@Override
protected void onPause() {
super.onPause();
System.gc();
}
// Some say that you should never call system gc your self, but for me it helps with stability.
2条答案
按热度按时间jm81lzqq1#
使用Bitmaps后一定要调用bitmap.recycle()方法。调用GC不是解决方案,不能保证它一定会被调用。另外,如果不调用recycle方法,位图在使用后不会被释放。
如果这也不能解决您的问题,请尝试使用WeakReferences:Bitmap, Bitmap.recycle(), WeakReferences, and Garbage Collection
如果这也不起作用,那么可能在你的代码中有其他的内存泄漏。使用eclipse中的MAT来找出你代码中的内存泄漏。
icomxhvb2#
在显示图片之前,您必须使用以下命令将图片缩小一点:
在onPause中:
这解决了我的问题,但可能不是100%最优的。但它阻止了VM预算上的应用程序崩溃。