收藏Android下bitmap内存限制OUT OF MEMORY的方法

http://www.ligotop.com/2011/0412/59.html

Android有效解决加载大图片时内存溢出的问题

尽量不要使用setImageBitmap或setImageResource或BitmapFactory.decodeResource来设置一张大图,因为这些函数在完成decode后,最终都是通过java层的createBitmap来完成的,需要消耗更多内存。因此,改用先通过BitmapFactory.decodeStream方法,创建出一个bitmap,再将其设为ImageView的 source,decodeStream最大的秘密在于其直接调用JNI>>nativeDecodeAsset()来完成decode,无需再使用java层的createBitmap,从而节省了java层的空间。如果在读取时加上图片的Config参数,可以跟有效减少加载的内存,从而跟有效阻止抛out of Memory异常另外,decodeStream直接拿的图片来读取字节码了, 不会根据机器的各种分辨率来自动适应, 使用了decodeStream之后,需要在hdpi和mdpi,ldpi中配置相应的图片资源, 否则在不同分辨率机器上都是同样大小(像素点数量),显示出来的大小就不对了。

http://hi.baidu.com/liganggang/item/6ab1e480fa2da1e3e596e015

byte转化为Bitmap,防止内存溢出

ByteArrayInputStream is =new ByteArrayInputStream(byte[]);      BitmapFactory.Options options=new BitmapFactory.Options();       options.inPurgeable = true;      options.inInputShareable = true;      options.inSampleSize = 2;      try {          BitmapFactory.Options.class.getField("inNativeAlloc").setBoolean(options,true);      } catch(Exception ex) {          ex.printStackTrace();      }      Bitmap imgBit = (new WeakReference<Bitmap>(BitmapFactory.decodeStream(is, null, options))).get();  

更多相关文章

  1. android 使用异步加载图片
  2. Android(安卓)内存管理 &Memory Leak & OOM 分析
  3. [置顶] Android防止内存溢出浅析
  4. 且谈Android内存溢出
  5. Android内存管理的原理--进程管理
  6. Android(安卓)如何加载大图片
  7. Android开发学习笔记(十二) 获取系统可用内存
  8. android拍照造成内存泄露问题
  9. android内存泄露

随机推荐

  1. 数据类型和运算符 MySQL学习笔记
  2. 如何用C++向MYSQL插入UNICODE字符串?
  3. mysql where in形式存储过程如何传递带有
  4. Mysql使用优化之处(转)
  5. 安装HandlerSocket,with-mysql-source报错
  6. MYSQL5.7源码包编译安装
  7. 具有多个调用的常规查询与使用PHP处理的
  8. 是否有人将数据库数据存储在PHP $ _SESSI
  9. mysql分组后取各组前五条
  10. MYSQL社区版安装手册