参考解答
android系统给图片分配的内存只有8M,当加载大量图片时往往会出现OOM。
Android加载大量图片内存溢出解决方案:
1)尽量不要使用setImageBitmap或setImageResource或BitmapFactory.decodeResource来设置一张大图,因为这些函数在完成decode后,最终都是通过java层的createBitmap来完成的,需要消耗更多内存,可以通过BitmapFactory.decodeStream方法,创建出一个bitmap,再将其设为ImageView的 source
2)使用BitmapFactory.Options对图片进行压缩
InputStream is = this.getResources().openRawResource(R.drawable.pic1);
BitmapFactory.Options ptions=new BitmapFactory.Options();
options.inJustDecodeBounds = false;
options.inSampleSize = 10; //width,hight设为原来的十分一
Bitmap btp =BitmapFactory.decodeStream(is,null,options);
3)运用Java软引用,进行图片缓存,将需要经常加载的图片放进缓存里,避免反复加载
及时销毁不再使用的Bitmap对象
if(!bmp.isRecycle() ){
bmp.recycle() //回收图片所占的内存
system.gc() //提醒系统及时回收
相似问题
Android版本更新的实现思路有哪些?
Android版本更新的实现思路有哪些?
Android自定义组件实现思路有哪些?
Android自定义组件实现思路有哪些?
android中内存的优化有哪些方法?
android中内存的优化有哪些方法?
Android SDK 3.0(HoneyComb)及4.0(Ice Cream)新特性是什么?
Android SDK 3 0(HoneyComb)及4 0(Ice Cream)新特性是什么?
Android中如何将一个Activity设置成窗口的样式?
Android中如何将一个Activity设置成窗口的样式?
