android内置存储器memory和第三方外部存储disk管理

android内置存储器memory和第三方外部存储disk管理

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

缓存管理这里

http://blog.csdn.net/intbird/article/details/38338713

图片处理在这里

http://blog.csdn.net/intbird/article/details/38338811

界面回收图片在这里

http://blog.csdn.net/intbird/article/details/19905549

工具Jar包在这里说明:

http://pan.baidu.com/s/1c0q2SzY

/** 
 * @author intbird@163.com 
 * @time 20140606 
 */ 
package com.intbird.utils;

import java.io.File;

import com.yilake.store.FileHelper;

import android.graphics.Bitmap;
import android.os.Environment;
import android.util.LruCache;

public class CacheManager {
	//单例
	private static CacheManager cacheInstance;
	
	//内存缓存大小
	private final int MEMO_CACHE_SIZE=((int)(Runtime.getRuntime().maxMemory()/1024));
	//文件缓存大小
	private final int DISK_CACHE_SIZE=1024*1024*100;
	//内存缓存
	private LruCache<String,Bitmap> mMemoryCache;
	//文件缓存
	private DiskLruCache mDiskLruCache;
	private String cacheUrl="";
	
	public CacheManager() {
		//内存缓存
		mMemoryCache=new LruCache<String, Bitmap>(MEMO_CACHE_SIZE){
			protected int sizeOf(String key, Bitmap bitmap) {
				return bitmap.getByteCount()/1024;
			};
		};
		//文件缓存
		setBitmapFileCacheDir(FileHelper.DISK_CACHE_FILEDIR);
	}
	
	/**
	 * 获取单例
	 * @return
	 */
	public static CacheManager getInstance() {
		if(cacheInstance==null){
			cacheInstance=new CacheManager();
		}
		return cacheInstance;
	}
	
	/**
	 * 设置缓存文件夹;
	 * @param cacheDir
	 */
	public void setBitmapFileCacheDir(String cacheDir){
		File cacheFile=	getDiskFileCache(cacheDir);
		cacheUrl=cacheFile.getAbsolutePath();
		mDiskLruCache=DiskLruCache.openCache(cacheFile, DISK_CACHE_SIZE);
	}
	/**
	 * 返回缓存文件夹路径
	 * @return
	 */
	public String getBitmapFileCacheDir(){
		return cacheUrl;
	}
	
	//通用外部调用
	public void addBitmapToCache(String fileUrl, Bitmap bitmap) {
		addBitmapToMemory(fileUrl,bitmap);
		addBitmapToDisk(fileUrl,bitmap);
	}

	public Bitmap getBitmapFromCache(String key){
		Bitmap bmp=null;
		bmp=getBitmapFromMemory(key);
		if(bmp==null){
			bmp=getBitmapFromDisk(key);
		}
		return bmp;
	}

	/**
	 * 图片增加内存缓存
	 * @param key
	 * @param bitmap
	 */
	private void addBitmapToMemory(String key,Bitmap bitmap){
		if(getBitmapFromMemory(key)==null){
			mMemoryCache.put(key, bitmap);
		}
	}
	/**
	 * 获取内存缓存图片
	 * @param key
	 * @return
	 */
	private Bitmap getBitmapFromMemory(String key){
		return mMemoryCache.get(key);
	}
	/**
	
	 * 将图片增加文件缓存
	 * @param key
	 * @param bitmap
	 */
	private void addBitmapToDisk(String key,Bitmap bitmap){
        if (mDiskLruCache != null && mDiskLruCache.get(key) == null) {
            mDiskLruCache.put(key, bitmap);
        }
	}
	/**
	 * 从文件缓存中获取图片
	 * @param key
	 * @return
	 */
	private Bitmap getBitmapFromDisk(String key){
        if (mDiskLruCache != null) {
            return mDiskLruCache.get(key);
        }
	    return null;
	}
	
	/**
	 * 获取缓存文件夹
	 * @return
	 */
	public static File getDiskFileCache(String cacheDir){
		String cachePath =Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) ||
	                    !Environment.isExternalStorageRemovable() ? 
	                    		Environment.getExternalStorageDirectory().getPath():
	                    		Environment.getDataDirectory().getPath();
	    File file =new File(cachePath + File.separator + cacheDir);
	    if(!file.exists()) file.mkdir();
	    return file;
	}
}

版权声明:本文博客原创文章。博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117218.html原文链接:https://javaforall.net

(2)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 计算机网络——子网划分(内含习题讲解)

    计算机网络——子网划分(内含习题讲解)PS:(习题是由b站–计算机网络-谢希仁第7版-河南科技大学视频中获得)前情提要:我们在这之前已经学过了两级的IP地址:但是两级的IP地址有很多弊端,所以我们将要学习三级IP地址,也就是两级IP地址的升级版那我们要注意什么呢?一:我怎么去知道人家用的是两级IP还是三级IP呢?答:利用子网掩码;二:那什么是子网掩码呢?…

    2022年4月19日
    38
  • WIN10下 Tomcat安装及配置教程「建议收藏」

    WIN10下 Tomcat安装及配置教程「建议收藏」目录工具/原料方法/步骤注意事项工具/原料1,JDK:版本为jdk1.8我的下载文件里有,解压缩版的2,tomcat:版本为apache-tomcat-8.0.53-windows-x64.zip下载地址http://tomcat.apache.org/3,windows10,64bit方法/步骤一、安装JDK和Tomcat1,安装JDK:解压即可,…

    2022年5月12日
    49
  • C#彩色扭曲验证码

    C#彩色扭曲验证码该验证码生成类集合了网上大部分的验证码生成类的精华,并多次改进,现在已经形成了可在生产环节中使用的验证码。该验证码加入了背景噪点,背景噪点曲线和直线,背景噪点文字以及扭曲,调暗,模糊等。完全可以实现防识别。按照国际惯例先贴张效果图吧:#region验证码生成类//////验证码生成类///

    2022年7月21日
    16
  • webstorm 使用git(git管理工具的安装与使用)

    该篇主要介绍在webstorm中怎么使用git工具,需要学习git的请找别的教程,具体的目前只介绍常用的代码拉取和提交,后续在进行更新(不一定会)webstorm中的git操作主要在VCS中;判断项目中是否有git仓库,下面两个图项目文件夹有没有git仓库,鼠标点击VCS时如下图所示;没有git仓库有git仓库3.新建git仓库,如下图,点击CreateGitRe…

    2022年4月13日
    720
  • java 文件上传到服务器_Java上传文件到服务器端的方法「建议收藏」

    java 文件上传到服务器_Java上传文件到服务器端的方法「建议收藏」Web文件上传采用POST的方式,与POST提交表单不同的是,上传文件需要设置FORM的enctype属性为multipart/form-data.由于上传的文件会比较大,因此需要设置该参数指定浏览器使用二进制上传。如果不设置,enctype属性默认为application/x-www-form-urlencoded,使用浏览器将使用ASCII向服务器发送数据,导致发送文件失败。上传文件要使用文件…

    2025年9月12日
    6
  • 阿里编程规范 pdf_阿里前端开发规范

    阿里编程规范 pdf_阿里前端开发规范阿里编程规范及阿里Java开发规约插件AlibabaJavaCodingGuidelines统一规范标准将有助于提高行业编码规范化水平,帮助行业人员提高开发质量和效率、大大降低代码维护成本。2017年年初,首次公开了《阿里巴巴Java开发手册》,自从第一个版本起,倍受业界关注。为了让开发者更加方便、快速的将规范推动并实行起来,阿里巴巴基于手册内容,研发了一套自动化的IDE检测插件(…

    2025年7月4日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号