android中加载图片时出现oom
ImageView加载图片时,有时会出现OOM imageView.setImageResource(imageId); 解决方法 /** * 以最省内存的方式读取本地资源的图片 * * @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); } Bitmap bitmap=readBitMap(LoginActivity.this,imageId); imageView.setImageBitmap(bitmap); 那是为什么,会导致oom呢: 原来当使用像 imageView.setBackgroundResource,imageView.setImageResource, 或者 BitmapFactory.decodeResource 这样的方法来设置一张大图片的时候,这些函数在完成decode后,最终都是通过java层的createBitmap来完成的,需要消耗更多内存。 ...