收藏Android下bitmap内存限制OUT OF MEMORY的方法
16lz
2021-01-23
收藏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();
更多相关文章
- android中从图库中选取图片
- Android使用libjpeg实现图片压缩
- Android 内存管理 &Memory Leak & OOM 分析
- [置顶] Android防止内存溢出浅析
- android访问网络,下载图片,并设置UI
- Android Retrofit与Spring后台配合,实现单张、多张图片上传功能
- Android 强大的图片加载缓存— Glide
- 让 Android 可以识别BMP图片文件,且目前Android所支持的所有图片
- 且谈Android内存溢出