收藏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使用libjpeg实现图片压缩
  3. Android 内存管理 &Memory Leak & OOM 分析
  4. [置顶] Android防止内存溢出浅析
  5. android访问网络,下载图片,并设置UI
  6. Android Retrofit与Spring后台配合,实现单张、多张图片上传功能
  7. Android 强大的图片加载缓存— Glide
  8. 让 Android 可以识别BMP图片文件,且目前Android所支持的所有图片
  9. 且谈Android内存溢出

随机推荐

  1. Android保活实现方案梳理
  2. android 双缓冲机制
  3. android实现权限管理和签名静默卸载
  4. Android各版本发布时间及对应API(2019.3.2
  5. Android 共享内存实现跨进程大文件传输(
  6. Android旅游APP类项目源代码
  7. 探索Android中selector和shape的结合使用
  8. Android中建造者模式自定义Dialog
  9. Android客户端如何从Web服务端加载图片
  10. 什么特性造就了Android快速启动