关于 android 加载 res 图片 out of memory 问题 解决 同样适用于 sd卡图片
2019独角兽企业重金招聘Python工程师标准>>>
发现android 加载res图片如果过多也会崩溃
android 也是使用
Bitmap bm = BitmapFactory.decodeResourceStream(res, value, is, pad, opts);
来加载图片,不同他一般不会释放,如果图片太多就崩溃了
不过解决方法就更简单了,做个缓存,以后如果app 有很多图片还是要自己管理图片啊
这个类同样适用 sd卡的图片
package com.example.iqtest.util;import java.io.InputStream;
import java.lang.ref.SoftReference;
import java.util.HashMap;import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.widget.ImageView;public class BitmapManager { private static HashMap<String, SoftReference<Bitmap>> cache; //如果是 int object的键值 对 应该是使用 SparseArray<E>的 但是这里考虑更多的还是加载sd卡的图片!static { cache = new HashMap<String, SoftReference<Bitmap>>(); } /*** 加载图片-可指定显示图片的高宽* @param path* @param imageView* @param width* @param height*/public void loadBitmap(int resId, ImageView imageView , Context context) { Bitmap bitmap = getBitmapFromCache(resId + ""); if (bitmap != null) { imageView.setImageBitmap(bitmap); } else { Bitmap bmp = getBitmap(resId , context);imageView.setImageBitmap(bmp);} } /*** 从缓存中获取图片* @param path*/private Bitmap getBitmapFromCache(String path) { Bitmap bitmap = null;if (cache.containsKey(path)) { bitmap = cache.get(path).get(); } return bitmap; } /*从res中加载图片*/private Bitmap getBitmap(int resId , Context context){Bitmap bitmap = null;BitmapFactory.Options opt = new BitmapFactory.Options(); opt.inPreferredConfig = Bitmap.Config.RGB_565; opt.inPurgeable = true; opt.inInputShareable = true; //获取资源图片 InputStream is = context.getResources().openRawResource(resId); bitmap =BitmapFactory.decodeStream(is,null,opt); if (bitmap != null) {cache.put(resId + "", new SoftReference<Bitmap>(bitmap));}return bitmap;}
}
转载于:https://my.oschina.net/sfshine/blog/470732
关于 android 加载 res 图片 out of memory 问题 解决 同样适用于 sd卡图片相关推荐
- sd卡图片损坏怎么修复?
在旅途中,正常情况下用相机拍的照片都是存在相机的SD卡里的.等到我们需要时,在进行导出.但如果是出现意外导致sd卡图片遭到损坏,遇到这种情况,sd卡图片损坏怎么修复呢?这里小编将为大家分享一些图片修复 ...
- 解决Android 加载大图片OOM
图片在Android 占用内存计算 假如一张图的像素为100×200,那么他在内存中占用的内存为: 100×200(像素点) × 4(每个像素点占用的内存,默认为4.) public Bitmap.C ...
- Android加载/处理超大图片神器!SubsamplingScaleImageView(subsampling-scale-image-view)【系列1】...
Android加载/处理超大图片神器!SubsamplingScaleImageView(subsampling-scale-image-view)[系列1] Android在加载或者处理超大巨 ...
- gif android 点击 加载,android 加载显示gif图片的解决方案
使用方法: 1-把GifView.jar加入你的项目. 2-在xml中配置GifView的基本属性,GifView继承自View类,和Button.ImageView一样是一个UI控件.如: andr ...
- Android加载大图片不OutOfMemoryError
Android加载图片时,对于分辨率小,配置低的机子,很容易发生OutOfMemoryError.手机的内存比图片的大很多,怎么会这样? 在设置Android虚拟机的内存时: RAM:模拟器的内存空间 ...
- Android加载/处理超大图片神器!SubsamplingScaleImageView(subsampling-scale-image-view)【系列1】
Android加载/处理超大图片神器!SubsamplingScaleImageView(subsampling-scale-image-view)[系列1] Android在加载或者处理超大巨 ...
- Android加载大图片OOM异常解决
Android加载大图片OOM异常解决 参考文章: (1)Android加载大图片OOM异常解决 (2)https://www.cnblogs.com/jevan/archive/2012/07/05 ...
- Android手机内存图片读取,有效解决Android加载大图片内存溢出的问题
今天在交流群里,有人问我他经常遇到加载图片时内存溢出的问题,遇到的情况还是在自己的测试机或者手机里没有问题,做好了, 到了客户手机里就内存溢出了.其实有时候不同的手机和不同的系统对内存的要求不一样,尤 ...
- 【转载】Android加载大图片OOM异常解决
官方资料: https://developer.android.com/topic/performance/graphics/load-bitmap 思路 先测试未知来源图片的尺寸和MIME文件类型; ...
最新文章
- 跟着 Event loop 规范理解浏览器中的异步机制
- c语言中一百以内相乘的积,一百以内的加减乘除法游戏....
- WebStorm ES6 语法支持设置
- Java内存缓存-通过Map定制简单缓存
- 16位汇编 call调用函数 通过栈来传递参数
- 一文汇总 JDK 5 到 JDK 15 中的牛逼功能!
- 慢日志之一:开启mysql慢查询日志并使用mysqldumpslow命令查看,分析诊断工具之四...
- 如何搭建靠谱的测试环境
- [转载]使用 Abbot 框架自动化测试 Eclipse 插件的用户界面,第 1 部分
- 企鹅智库:2019-2020中国互联网趋势报告
- Word转html实现在线预览
- php mb_eregi_replace 只替换一个,php正则ereg ereg_replace eregi eregi_replace split
- 2022年起重机司机(限桥式起重机)报名考试及起重机司机(限桥式起重机)考试资料
- 呕心沥血写了三天3两夜24k字的MySQL详细教程
- 一个TCP连接总是以1KB的最大段发送TCP段,发送方有足够多的数据要发送。当拥塞窗口为16KB时发生了超时,如果接下来的4个RTT(往返时间)时间内的TCP段的传输都是成功的,那么当第4个RTT时间
- Matlab 关闭提醒,开始使用MATLAB?[关闭]
- 怎么查看本地DNS缓存?
- 中小企业上马ERP要谨慎
- Java 泛型的本质——类型擦除
- 卷积层和全连接层的区别_CNN卷积层、全连接层的参数量、计算量
热门文章
- 1月国内操作系统市场:Windows XP份额高达60.84%
- 使用sourceInsight 提高代码编写效率
- 《Two Dozen Short Lessons in Haskell》学习(八)- Function Types, Classes, and Polymorphism
- 使用inno setup打包程序完整脚本(.net框架检测,重复安装检测)
- Silverlight Analytics Framework(开源分析框架)
- 接口学习笔记(2009.11.24)
- 激动人心的AutoCAD .net开发技术
- 自动红眼移除算法 附c++完整代码
- pfSense设置多WAN后,解决网银无法登陆问题
- Struts2返回json