android加载大图片的时候如何防止内存溢出?

IT互联网 已帮助: 时间:2025-04-12 01:50:50

android加载大图片的时候如何防止内存溢出?

难度:⭐⭐⭐

题库:IT/互联网,软件开发

标签:如何防止,加载,内存

参考解答

用户头像

456***125

2025-04-12 01:50:50

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中移动互联数据交互格式有哪些及其区别是什么?

相似问题