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卡路 ...
随机推荐
- TextView 使用自定义的字体和亮点
尊重原创:http://blog.csdn.net/yuanzeyao/article/details/40478815 如今非常多应用中喜欢使用自己定义字体,今天我就来实如今TextView中使用自 ...
- xml和json选择奖
xml&json战争,一般能够分离两个对立阵营.党的手感json足够强大以便能够替代xml.有一方感觉json滑稽丑陋,绝对没有和xml赛可能. 为了避免"拉仇恨"(我不是 ...
- 最小路径覆盖 hdu 1151 hdu 3335
Air Raid Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...
- Vijos P1881 闪烁的星星 (加强自己多一点。。)
假设每次查询不是整个长度,但[x, y]此时间间隔. . 闲来无事写的,感觉是正确的.这将成为合并范围. #include <cstdio> #include <cstring> ...
- win7,win8取得管理员权限 .reg文件
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\runas] @="获取管理员所有权" " ...
- Android含文档server结束(client UI接口异步请求的一部分)三
在本文中,AsyncTask为了实现异步请求,详细代码如下所示的: public class downloadActivity extends Activity { private TextView ...
- Qt中使用的编码QTextCodec::
//如果界面上的中文依然显示乱码,那么请将main.cpp文件中的: QTextCodec::setCodecForTr(QTextCodec::codecForLocale()); //更改为: Q ...
- 玩转web之servlet(六)---session介绍及简单使用(登录验证中保存信息)
在浏览器与服务器进行交互时,往往需要把涉及到的一些数据保存下来,这时就需要使用cookie或session进行状态管理. 这篇文章先来说说session怎么用,首先在servlet中创建一个sessi ...
- 从控制台读取password - C#
Tip : 从控制台读取password 语言: C# ______________________________________________________________ 在登陆Lin ...
- Duanxx的STM32学习: 启动模式,BOOT0和BOOT1具体解释
在画STM32的电路图的时候,关于STM32的启动方式纠结了一下,现有的參考设计都是在STM32的启动选择引脚BOOT0和BOOT1上使用了跳帽,用以人工选择STM32的启动方式,可是在实际应用中这样 ...