文档章节

关于 android 加载 res 图片 out of memory 问题 解决 同样适用于 sd卡图片

SuShine
 SuShine
发布于 2015/06/25 15:28
字数 322
阅读 16
收藏 0

发现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;
    }
}


本文转载自:http://blog.csdn.net/sfshine/article/details/17362589

共有 人打赏支持
SuShine
粉丝 123
博文 497
码字总数 144879
作品 0
朝阳
后端工程师
Android工具TraceView

一、TraceView 简介 TraceView 是 Android 平台特有的数据采集和分析工具,它主要用于分析 Android 中应用程序的 hotspot。TraceView 本身只是一个数据分析工具,而数据的采集则需要使用 ...

恰同学少年
2015/08/02
0
0
start Android 内外存彻底研究

一部Android手机存在不同的存储空间类型。拿我的LG Optimus举例,他有512MB ROM和512MB RAM,还有一个SDHC的扩展槽,标配2G内存卡,最大可支持32G内存卡。那么这些数据都是什么意思呢? RAM ...

LiangX
2012/02/19
0
0
析:自定义适配器实现Grid View和Gallery碰到到问题。

在: http://www.oschina.net/code/snippet1512879426上学习grid view,不过做学习代码到过程中碰到一下问题: 1.运行起来之后,APP会异常结束; 2.copy数据到模拟终端到sdcard中; 问题1.运...

垂盆草
2012/08/18
0
0
系出名门Android(1) - 在 Windows 下搭建 Android 开发环境,以及 ...

系出名门Android(1) - 在 Windows 下搭建 Android 开发环境,以及 Hello World 程序 作者:webabcd 介绍 搭建 Android 的开发环境,以及写⼀个简单的示例程序 在 Windows 下搭建 Android 开发...

庸人谷
2012/12/27
0
0
Android:内存控制及OOM处理

OOM(内存溢出)和Memory Leak(内存泄露)有什么关系? OOM可能是因为Memory Leak,也可能是你的应用本身就比较耗内存(比如图片浏览型的)。所以,出现OOM不一定是Memory Leak。 同样,Mem...

Xushao
2013/05/07
0
1

没有更多内容

加载失败,请刷新页面

加载更多

Maven 项目中依赖的搜索顺序

ettings_mirror 的优先级高于 central settings_profile_repo 优先级高于 settings_mirror settings_profile_repo 优先级高于 pom_repositories settings_profile_repo 优先级高于 pom_prof......

xingyu4j
35分钟前
2
0
改变maven项目的名称

pom.xml <groupId>com.soft.xxx</groupId><artifactId>xxx</artifactId><packaging>war</packaging><version>0.0.1-SNAPSHOT</version><name>xxx Maven Webapp</name><build>......

1713716445
36分钟前
2
0
windows下按照RabbitMQ

rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统。它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rabbit MQ 是建立在Erlang OTP平...

zhaochaochao
36分钟前
2
0
10个PHP比特币开源项目

如果你是一个Phper,如果你希望学习区块链,那么本文列出的10个开源的Php比特币项目,将有助于你了解在自己的应用中如何加入对比特币的支持。 如果你希望快速掌握使用Php对接比特币钱包的方法...

笔阁
44分钟前
26
0
MyBatis级联探讨

数据模型 <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper name......

职业搬砖20年
48分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部