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卡图片相关推荐

  1. sd卡图片损坏怎么修复?

    在旅途中,正常情况下用相机拍的照片都是存在相机的SD卡里的.等到我们需要时,在进行导出.但如果是出现意外导致sd卡图片遭到损坏,遇到这种情况,sd卡图片损坏怎么修复呢?这里小编将为大家分享一些图片修复 ...

  2. 解决Android 加载大图片OOM

    图片在Android 占用内存计算 假如一张图的像素为100×200,那么他在内存中占用的内存为: 100×200(像素点) × 4(每个像素点占用的内存,默认为4.) public Bitmap.C ...

  3. Android加载/处理超大图片神器!SubsamplingScaleImageView(subsampling-scale-image-view)【系列1】...

     Android加载/处理超大图片神器!SubsamplingScaleImageView(subsampling-scale-image-view)[系列1] Android在加载或者处理超大巨 ...

  4. gif android 点击 加载,android 加载显示gif图片的解决方案

    使用方法: 1-把GifView.jar加入你的项目. 2-在xml中配置GifView的基本属性,GifView继承自View类,和Button.ImageView一样是一个UI控件.如: andr ...

  5. Android加载大图片不OutOfMemoryError

    Android加载图片时,对于分辨率小,配置低的机子,很容易发生OutOfMemoryError.手机的内存比图片的大很多,怎么会这样? 在设置Android虚拟机的内存时: RAM:模拟器的内存空间 ...

  6. Android加载/处理超大图片神器!SubsamplingScaleImageView(subsampling-scale-image-view)【系列1】

     Android加载/处理超大图片神器!SubsamplingScaleImageView(subsampling-scale-image-view)[系列1] Android在加载或者处理超大巨 ...

  7. Android加载大图片OOM异常解决

    Android加载大图片OOM异常解决 参考文章: (1)Android加载大图片OOM异常解决 (2)https://www.cnblogs.com/jevan/archive/2012/07/05 ...

  8. Android手机内存图片读取,有效解决Android加载大图片内存溢出的问题

    今天在交流群里,有人问我他经常遇到加载图片时内存溢出的问题,遇到的情况还是在自己的测试机或者手机里没有问题,做好了, 到了客户手机里就内存溢出了.其实有时候不同的手机和不同的系统对内存的要求不一样,尤 ...

  9. 【转载】Android加载大图片OOM异常解决

    官方资料: https://developer.android.com/topic/performance/graphics/load-bitmap 思路 先测试未知来源图片的尺寸和MIME文件类型; ...

最新文章

  1. 跟着 Event loop 规范理解浏览器中的异步机制
  2. c语言中一百以内相乘的积,一百以内的加减乘除法游戏....
  3. WebStorm ES6 语法支持设置
  4. Java内存缓存-通过Map定制简单缓存
  5. 16位汇编 call调用函数 通过栈来传递参数
  6. 一文汇总 JDK 5 到 JDK 15 中的牛逼功能!
  7. 慢日志之一:开启mysql慢查询日志并使用mysqldumpslow命令查看,分析诊断工具之四...
  8. 如何搭建靠谱的测试环境
  9. [转载]使用 Abbot 框架自动化测试 Eclipse 插件的用户界面,第 1 部分
  10. 企鹅智库:2019-2020中国互联网趋势报告
  11. Word转html实现在线预览
  12. php mb_eregi_replace 只替换一个,php正则ereg ereg_replace eregi eregi_replace split
  13. 2022年起重机司机(限桥式起重机)报名考试及起重机司机(限桥式起重机)考试资料
  14. 呕心沥血写了三天3两夜24k字的MySQL详细教程
  15. 一个TCP连接总是以1KB的最大段发送TCP段,发送方有足够多的数据要发送。当拥塞窗口为16KB时发生了超时,如果接下来的4个RTT(往返时间)时间内的TCP段的传输都是成功的,那么当第4个RTT时间
  16. Matlab 关闭提醒,开始使用MATLAB?[关闭]
  17. 怎么查看本地DNS缓存?
  18. 中小企业上马ERP要谨慎
  19. Java 泛型的本质——类型擦除
  20. 卷积层和全连接层的区别_CNN卷积层、全连接层的参数量、计算量

热门文章

  1. 1月国内操作系统市场:Windows XP份额高达60.84%
  2. 使用sourceInsight 提高代码编写效率
  3. 《Two Dozen Short Lessons in Haskell》学习(八)- Function Types, Classes, and Polymorphism
  4. 使用inno setup打包程序完整脚本(.net框架检测,重复安装检测)
  5. Silverlight Analytics Framework(开源分析框架)
  6. 接口学习笔记(2009.11.24)
  7. 激动人心的AutoCAD .net开发技术
  8. 自动红眼移除算法 附c++完整代码
  9. pfSense设置多WAN后,解决网银无法登陆问题
  10. Struts2返回json