比较节省内存的一种加载图片的方法

来源:互联网 发布:免费设计室内装修软件 编辑:程序博客网 时间:2024/05/09 16:20
/** *  尽量不要使用setImageBitmapsetImageResourceBitmapFactory.decodeResource来设置一张大图, 因为这些函数在完成decode后,最终都是通过java层的createBitmap来完成的,需要消耗更多内存。 因此,改用先通过BitmapFactory.decodeStream方法,创建出一个bitmap,再将其设为ImageViewsource decodeStream最大的秘密在于其直接调用JNI>>nativeDecodeAsset()来完成decode 无需再使用java层的createBitmap,从而节省了java层的空间。 如果在读取时加上图片的Config参数,可以跟有效减少加载的内存,从而跟有效阻止抛out of Memory异常 * @param context * @param resId * @return */public static Bitmap readBitmap(Context context, int resId){    BitmapFactory.Options opt = new BitmapFactory.Options();    opt.inPreferredConfig = Bitmap.Config.RGB_565;    opt.inPurgeable = true;    opt.inInputShareable = true;    //获取资源图片    InputStream is = context.getResources().openRawResource(resId);    return BitmapFactory.decodeStream(is,null,opt);}
0 0