android自带的内存memory和第三方外部存储disk管理
2014-08-01 16:32
344 查看
缓存管理在这里
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
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中内存、内部存储及外部存储的区别
- Android 获取内存、内部存储、外部存储空间大小
- Android内存解析(二)— 详解内存,内部存储和外部存储
- 理解 Android 本地数据存储 API--利用首选项、SQLite 和内部及外部内存 API
- android 的内存、内部存储和外部存储的理解/cache/system。
- Android开发中内存、内部存储、外部存储详解
- Managing Bitmap Memory管理bitmap内存(Android官方文档翻译——四)
- Android开发中内存、内部存储、外部存储详解
- Android 获取内存、内部存储、外部存储空间大小
- Android内存解析(二)— 详解内存,内部存储和外部存储
- Android内部存储和外部存储以及缓存清理和内存清理!
- Android 获取内存、内部存储、外部存储空间大小
- [Android]文件存储-内存(系统存储)/内部存储(内置存储卡)/外部存储(SDcard)
- Android 漫游之路------将文件保存到内存、SD以及获取手机内部存储与外部存储空间的大小
- Android-避免出现bitmap内存限制OUT OF MEMORY的一种方法-缓存
- Android获取外部和内部存储空间总大小
- Android 之 内存管理
- Android 之 内存管理
- 内存磁盘介绍 introduction of memory disk software