缓存管理这里

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

  1. /**
  2. * @author intbird@163.com
  3. * @time 20140606
  4. */
  5. package com.intbird.utils;
  6.  
  7. import java.io.File;
  8.  
  9. import com.yilake.store.FileHelper;
  10.  
  11. import android.graphics.Bitmap;
  12. import android.os.Environment;
  13. import android.util.LruCache;
  14.  
  15. public class CacheManager {
  16. //单例
  17. private static CacheManager cacheInstance;
  18.  
  19. //内存缓存大小
  20. private final int MEMO_CACHE_SIZE=((int)(Runtime.getRuntime().maxMemory()/1024));
  21. //文件缓存大小
  22. private final int DISK_CACHE_SIZE=1024*1024*100;
  23. //内存缓存
  24. private LruCache<String,Bitmap> mMemoryCache;
  25. //文件缓存
  26. private DiskLruCache mDiskLruCache;
  27. private String cacheUrl="";
  28.  
  29. public CacheManager() {
  30. //内存缓存
  31. mMemoryCache=new LruCache<String, Bitmap>(MEMO_CACHE_SIZE){
  32. protected int sizeOf(String key, Bitmap bitmap) {
  33. return bitmap.getByteCount()/1024;
  34. };
  35. };
  36. //文件缓存
  37. setBitmapFileCacheDir(FileHelper.DISK_CACHE_FILEDIR);
  38. }
  39.  
  40. /**
  41. * 获取单例
  42. * @return
  43. */
  44. public static CacheManager getInstance() {
  45. if(cacheInstance==null){
  46. cacheInstance=new CacheManager();
  47. }
  48. return cacheInstance;
  49. }
  50.  
  51. /**
  52. * 设置缓存文件夹;
  53. * @param cacheDir
  54. */
  55. public void setBitmapFileCacheDir(String cacheDir){
  56. File cacheFile= getDiskFileCache(cacheDir);
  57. cacheUrl=cacheFile.getAbsolutePath();
  58. mDiskLruCache=DiskLruCache.openCache(cacheFile, DISK_CACHE_SIZE);
  59. }
  60. /**
  61. * 返回缓存文件夹路径
  62. * @return
  63. */
  64. public String getBitmapFileCacheDir(){
  65. return cacheUrl;
  66. }
  67.  
  68. //通用外部调用
  69. public void addBitmapToCache(String fileUrl, Bitmap bitmap) {
  70. addBitmapToMemory(fileUrl,bitmap);
  71. addBitmapToDisk(fileUrl,bitmap);
  72. }
  73.  
  74. public Bitmap getBitmapFromCache(String key){
  75. Bitmap bmp=null;
  76. bmp=getBitmapFromMemory(key);
  77. if(bmp==null){
  78. bmp=getBitmapFromDisk(key);
  79. }
  80. return bmp;
  81. }
  82.  
  83. /**
  84. * 图片增加内存缓存
  85. * @param key
  86. * @param bitmap
  87. */
  88. private void addBitmapToMemory(String key,Bitmap bitmap){
  89. if(getBitmapFromMemory(key)==null){
  90. mMemoryCache.put(key, bitmap);
  91. }
  92. }
  93. /**
  94. * 获取内存缓存图片
  95. * @param key
  96. * @return
  97. */
  98. private Bitmap getBitmapFromMemory(String key){
  99. return mMemoryCache.get(key);
  100. }
  101. /**
  102.  
  103. * 将图片增加文件缓存
  104. * @param key
  105. * @param bitmap
  106. */
  107. private void addBitmapToDisk(String key,Bitmap bitmap){
  108. if (mDiskLruCache != null && mDiskLruCache.get(key) == null) {
  109. mDiskLruCache.put(key, bitmap);
  110. }
  111. }
  112. /**
  113. * 从文件缓存中获取图片
  114. * @param key
  115. * @return
  116. */
  117. private Bitmap getBitmapFromDisk(String key){
  118. if (mDiskLruCache != null) {
  119. return mDiskLruCache.get(key);
  120. }
  121. return null;
  122. }
  123.  
  124. /**
  125. * 获取缓存文件夹
  126. * @return
  127. */
  128. public static File getDiskFileCache(String cacheDir){
  129. String cachePath =Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) ||
  130. !Environment.isExternalStorageRemovable() ?
  131. Environment.getExternalStorageDirectory().getPath():
  132. Environment.getDataDirectory().getPath();
  133. File file =new File(cachePath + File.separator + cacheDir);
  134. if(!file.exists()) file.mkdir();
  135. return file;
  136. }
  137. }

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

android内置存储器memory和第三方外部存储disk管理的更多相关文章

  1. Android外部存储

    WeTest 导读 外部存储作为开发中经常接触的一个重要系统组成,在Android历代版本中,有过许许多多重要的变更.我也曾疑惑过,为什么一个简简单单外部存储,会存在存在这么多奇奇怪怪的路径:/sdc ...

  2. 彻底了解android中的内部存储与外部存储

    我们先来考虑这样一个问题: 打开手机设置,选择应用管理,选择任意一个App,然后你会看到两个按钮,一个是清除缓存,另一个是清除数据,那么当我们点击清除缓存的时候清除的是哪里的数据?当我们点击清除数据的 ...

  3. 彻底理解android中的内部存储与外部存储

    我们先来考虑这样一个问题: 打开手机设置,选择应用管理,选择任意一个App,然后你会看到两个按钮,一个是清除缓存,另一个是清除数据,那么当我们点击清除缓存的时候清除的是哪里的数据?当我们点击清除数据的 ...

  4. Android外部存储 - 官方文档解读

    预备知识:External Storage Technical Information 摘要: "The WRITE_EXTERNAL_STORAGE permission must onl ...

  5. 【转】彻底理解android中的内部存储与外部存储

    我们先来考虑这样一个问题: 打开手机设置,选择应用管理,选择任意一个App,然后你会看到两个按钮,一个是清除缓存,另一个是清除数据,那么当我们点击清除缓存的时候清除的是哪里的数据?当我们点击清除数据的 ...

  6. android中的内部存储与外部存储

    我们先来考虑这样一个问题: 打开手机设置,选择应用管理,选择任意一个App,然后你会看到两个按钮,一个是清除缓存,另一个是清除数据,那么当我们点击清除缓存的时候清除的是哪里的数据?当我们点击清除数据的 ...

  7. Android 外部存储权限分析

    不知道你有么有发现.来自菜鸟的成长史:http://blog.csdn.net/zjbpku/article/details/25161131. KitKat之后的版本号不再支持用户对外置SDcard ...

  8. Android——课堂整理:assets目录和手机外部存储

    layout文件: <Button android:layout_width="match_parent" android:layout_height="wrap_ ...

  9. Android 在外部存储读写文件

    本文主要介绍android中如何在外部存储读写数据 sd卡的路径 sdcard:2.3之前的sd卡路径 mnt/sdcard:4.3之前的sd卡路径 storage/sdcard:4.3之后的sd卡路 ...

随机推荐

  1. 带鉴权信息的SIP呼叫

    带鉴权信息的SIP呼叫 INVITE sip:1000@192.168.50.34SIP/2.0 Via: SIP/2.0/UDP192.168.50.32:2445;branch=z9hG4bK-d ...

  2. ACdream原创群赛(18)のAK's dream题解

    只做了4题水题ADGI A题需要注意的就是“[...]”的输出了,何时输出,何时不输出. #include <stdio.h> int main() { int n, cur, d; ; ...

  3. CheckBoxList的操作查询是否被选中设置或者得到

    在项目中我们可能会经常遇到一收集多选信息的情况,比如做注册的时候要收集个人爱好,那时候大家第一个想到的肯定是CheckBoxList.那我们怎么来获取到CheckBoxList的值并且存入数据库呢?? ...

  4. 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 ...

  5. java线程池的注意事项

    java线程池是建立一个技术进步的线程.到来之前线程池打造一批在线程的线程尚未,队列上的备用,然后再利用这些资源.减少频繁创建和销毁对象, 1.jdk1.5以上提供了现成的线程池 2.java线程池的 ...

  6. spring html5 拖拽上传多文件

    注:这仅仅是一个粗略笔记.有些代码可能没用.兴许会再更新一个能够使用的版本号.不足之处,敬请见谅. 1.spring环境搭建,这里使用的是spring3的jar,须要同一时候引入common-IO 和 ...

  7. easyui LinkButton

    http://www.zi-han.net/case/easyui/menu&button.html

  8. minihomepage.exe 百度视频迷你主页

    百度视频最近动作可真.延续"DHot.exe 热点资讯"之后,又在桌面上出现了Tips窗体,例如以下图: 尽管是迷你的,可还是把其他桌面图标给挡了啊! 突然出来这么个窗体.我还以为 ...

  9. [置顶] ios 一个不错的图片浏览分享框架demo

    demo功能:一个不错的图片浏览分享框架demo.iphone6.1 测试通过.可以浏览图片,保存,微博分享到新浪,腾讯,网易,人人等. 注:(由于各个微博的接口有时候会有调整,不一定能分享成功.只看 ...

  10. 【原创】leetCodeOj --- Excel Sheet Column Title 解题报告

    题目地址: https://oj.leetcode.com/problems/excel-sheet-column-title/ 题目内容: Given a positive integer, ret ...