android内置存储器memory和第三方外部存储disk管理
缓存管理这里
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;
- }
- }
版权声明:本文博客原创文章。博客,未经同意,不得转载。
android内置存储器memory和第三方外部存储disk管理的更多相关文章
- Android外部存储
WeTest 导读 外部存储作为开发中经常接触的一个重要系统组成,在Android历代版本中,有过许许多多重要的变更.我也曾疑惑过,为什么一个简简单单外部存储,会存在存在这么多奇奇怪怪的路径:/sdc ...
- 彻底了解android中的内部存储与外部存储
我们先来考虑这样一个问题: 打开手机设置,选择应用管理,选择任意一个App,然后你会看到两个按钮,一个是清除缓存,另一个是清除数据,那么当我们点击清除缓存的时候清除的是哪里的数据?当我们点击清除数据的 ...
- 彻底理解android中的内部存储与外部存储
我们先来考虑这样一个问题: 打开手机设置,选择应用管理,选择任意一个App,然后你会看到两个按钮,一个是清除缓存,另一个是清除数据,那么当我们点击清除缓存的时候清除的是哪里的数据?当我们点击清除数据的 ...
- Android外部存储 - 官方文档解读
预备知识:External Storage Technical Information 摘要: "The WRITE_EXTERNAL_STORAGE permission must onl ...
- 【转】彻底理解android中的内部存储与外部存储
我们先来考虑这样一个问题: 打开手机设置,选择应用管理,选择任意一个App,然后你会看到两个按钮,一个是清除缓存,另一个是清除数据,那么当我们点击清除缓存的时候清除的是哪里的数据?当我们点击清除数据的 ...
- android中的内部存储与外部存储
我们先来考虑这样一个问题: 打开手机设置,选择应用管理,选择任意一个App,然后你会看到两个按钮,一个是清除缓存,另一个是清除数据,那么当我们点击清除缓存的时候清除的是哪里的数据?当我们点击清除数据的 ...
- Android 外部存储权限分析
不知道你有么有发现.来自菜鸟的成长史:http://blog.csdn.net/zjbpku/article/details/25161131. KitKat之后的版本号不再支持用户对外置SDcard ...
- Android——课堂整理:assets目录和手机外部存储
layout文件: <Button android:layout_width="match_parent" android:layout_height="wrap_ ...
- Android 在外部存储读写文件
本文主要介绍android中如何在外部存储读写数据 sd卡的路径 sdcard:2.3之前的sd卡路径 mnt/sdcard:4.3之前的sd卡路径 storage/sdcard:4.3之后的sd卡路 ...
随机推荐
- 带鉴权信息的SIP呼叫
带鉴权信息的SIP呼叫 INVITE sip:1000@192.168.50.34SIP/2.0 Via: SIP/2.0/UDP192.168.50.32:2445;branch=z9hG4bK-d ...
- ACdream原创群赛(18)のAK's dream题解
只做了4题水题ADGI A题需要注意的就是“[...]”的输出了,何时输出,何时不输出. #include <stdio.h> int main() { int n, cur, d; ; ...
- CheckBoxList的操作查询是否被选中设置或者得到
在项目中我们可能会经常遇到一收集多选信息的情况,比如做注册的时候要收集个人爱好,那时候大家第一个想到的肯定是CheckBoxList.那我们怎么来获取到CheckBoxList的值并且存入数据库呢?? ...
- Red Gate系列之二 SQL Source Control 3.0.13.4214 Edition 数据库版本控制器 完全破解+使用教程
原文:Red Gate系列之二 SQL Source Control 3.0.13.4214 Edition 数据库版本控制器 完全破解+使用教程 Red Gate系列之二 SQL Source Co ...
- java线程池的注意事项
java线程池是建立一个技术进步的线程.到来之前线程池打造一批在线程的线程尚未,队列上的备用,然后再利用这些资源.减少频繁创建和销毁对象, 1.jdk1.5以上提供了现成的线程池 2.java线程池的 ...
- spring html5 拖拽上传多文件
注:这仅仅是一个粗略笔记.有些代码可能没用.兴许会再更新一个能够使用的版本号.不足之处,敬请见谅. 1.spring环境搭建,这里使用的是spring3的jar,须要同一时候引入common-IO 和 ...
- easyui LinkButton
http://www.zi-han.net/case/easyui/menu&button.html
- minihomepage.exe 百度视频迷你主页
百度视频最近动作可真.延续"DHot.exe 热点资讯"之后,又在桌面上出现了Tips窗体,例如以下图: 尽管是迷你的,可还是把其他桌面图标给挡了啊! 突然出来这么个窗体.我还以为 ...
- [置顶] ios 一个不错的图片浏览分享框架demo
demo功能:一个不错的图片浏览分享框架demo.iphone6.1 测试通过.可以浏览图片,保存,微博分享到新浪,腾讯,网易,人人等. 注:(由于各个微博的接口有时候会有调整,不一定能分享成功.只看 ...
- 【原创】leetCodeOj --- Excel Sheet Column Title 解题报告
题目地址: https://oj.leetcode.com/problems/excel-sheet-column-title/ 题目内容: Given a positive integer, ret ...