问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

android bitmap 从网络获取图片并处理问题 溢出

发布网友 发布时间:2022-04-24 09:41

我来回答

3个回答

热心网友 时间:2022-06-18 14:58

在 Java中,JavaVM拥有自动管理内存的功能,Java的GC能够进行垃圾回收,但是如果ImageView使用过多的Bitmap的话,经常会报OOM(内存溢出)。

造成内存溢出及解决方案:

使用BitmapFactory.decodeStream替代createBitmap方法

原因是该方法直读取图片字节,调用JNI>>nativeDecodeAsset()来完成decode,无需再使用java层的createBitmap。

 使用压缩读取技术

BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;

             BitmapFactory.decodeFile(imageSdUri, options);               

                  final int height = options.outHeight;

                  final int width = options.outWidth;

                  options.inSampleSize = 1;

                  int w = 320;

                  int h = 480;

                  h =  w*height/width;//计算出宽高等比率

                  int a = options.outWidth/ w;

                  int b = options.outHeight / h;

                  options.inSampleSize = Math.max(a, b);

                  options.inJustDecodeBounds = false;

                  Bitmap bitmap =  BitmapFactory.decodeFile(imageSdUri, options);


3.及时释放Bitamp
Bitmap对象在不使用时,我们应该先调用recycle()释放内存,然后才它设置为null.虽然recycle()从源码上看,调用它应该能立即释放Bitmap的主要内存,但是测试结果显示它并没能立即释放内存。但是我它应该还是能大大的加速Bitmap的主要内存的释放。

热心网友 时间:2022-06-18 14:59

你一共读取了两次。
在第一次读取之后,即在调用方法”BitmapFactory.decodeStream(is, null, options)“之后,
is就已经空了,所以第二次会返回null。
解决方法:
用byte数组把读取的流先缓存起来,然后再使用方法”BitmapFactory.decodeByteArray()“进行解析。

热心网友 时间:2022-06-18 14:59

options.inJustDecodeBounds = false; 原因所在追问options.inJustDecodeBounds = false;不应该设为false吗?
不设返回null啊

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
天将雄师观后感600字 为什么喝酒会降血糖 牛栏山 52度浓香型白酒-购买最佳价格 全兴大曲 52度浓香型白酒-购买最佳价格 笔记本电脑怎么接音箱电脑如何连接外置音箱 笔记本电脑有音箱插孔吗笔记本电脑如何连接喇叭 冰箱压缩机过热启动5秒就停了 周长相等的正方形和圆,其面积比是多少 周长相等的正方形和圆面积比是多少 周长相等的正方形与圆形,边长与半径的比是( ),面积之比是( )。 要有... android 下怎样获取图片像素值 android中如何获取到图片的大小 Android加载网络图片,能自动生成缩略图吗? android gallery中,怎么获取当前的图片并得到图片的高和宽的长度?谢谢。 android 获取的图片尺寸比图片属性显示的尺寸大很多??? 关于android 读取网络图片大小的问题。 我做了一个程序从分服务器读取很多图片,但是原图很大 Android如何获取网络图片 android怎么获取drawble图片高宽 android图片太大如何获取图片尺寸然后缩放 android 怎么获取网络图片的宽高? android怎么获取图片的大小 为什么深圳的海滩大梅沙免费,小梅沙收费 小梅沙和大梅沙有什么区别 大梅沙要门票吗? 深圳大梅沙现在还免费么,那里有什么玩的, 深圳大梅沙小梅沙门票多少?去过的给答案最好。谢谢 星期天去大梅沙需要预约吗? 深圳小梅沙,大梅沙门票多少钱 大梅沙与小梅沙区别是什么? 大梅沙的门票要多少? Android开发中怎样获取WebView的内容宽度高度 android 读取资源图片有大小的限制吗 Android 如何获取网络上的图片 Android网络图片如何适配 Android viewpager的高度动态设置为网络获取到的图片的高度 怎么设置?试了各种方法都不行 Android程序开发如何获取图片的属性值,如图片的大小(KB)、上传或拍摄时间…… 明天是清明梦见去世的外婆? 服务区什么时候涨工资 在服务区上班好吗,待遇如何,我老婆想去,有五险一金吗 越南柬埔寨地区有适合中国人吃的美食吗? 高速公路自营服务区属于事业单位吗?管理员工资待遇怎么样? 在高速服务区工作是什么体验? 越南根茎、薯类蔬菜有哪些 本人有个机会去高速公路服务区加油站上班不知道那待遇怎么样 如何在打印网页时更改页边距? 老挝人平时喜欢送什么礼物 天水服务区临夏饭店服务员,一个月工资多少? 从网页上打印的准考证出来的是两张,怎么调整页边距用一张打印出来... 在高速公路服务区工作的来帮下忙哦,我想问下在服务区工作好吗,几小时工作制,有没发展前途呀? 请问燕窝该怎样烹调?最好是私房菜做法哦