转载地址:http://blog.csdn.net/wwj_748/article/details/42737607#comments
转载请注明:IT_xiao小巫
博客地址:http://blog.csdn.net/wwj_748
本篇博客要给大家分享的如何获取应用缓存的大小和清除缓存的功能,我们知道我们应用当中经常会产生一些数据,比如图片的缓存,数据库文件,配置文件等等。我们开发产品的时候,可能会有这样的一个需求清除应用内缓存的数据,可以让用户选择删除应用内产生的数据,这也是比较人性化的设计点。例如笔者参与开发的一款产品的设置界面就提供了清除缓存的功能,如下图所示:
在贴一大段代码之前,先普及Android的相关知识点:
先看360手机助手的一张图:
从上面这张图,我们可以看到这部手机有
系统文件(注:这个是系统的文件系统,不允许修改的)
内置SD卡(注:现在的手机基本上都有,就是我们所谓的ROM,是不可以移除的,RAM是我们手机的运行内存)
外置SD卡(注:这个就是我们的SD卡了,可以移除)
我们来考虑一个问题我们应用内的缓存数据存放在哪里?
我们的应用程序一般会产生以下几种类型的数据:
file-普通的文件存储
database-数据库文件(.db文件)
sharedPreference-配置数据(.xml文件)
cache-图片缓存文件
应用内数据的所有路径:
/data/data/com.xxx.xxx/cache - 应用内缓存(注:对应方法getCacheDir())
/data/data/com.xxx.xxx/databases - 应用内数据库
/data/data/com.xxx.xxx/shared_prefs - 应用内配置文件
/data/data/com.xxx.xxx/files - 应用内文件(注:对应方法getFilesDir())
一种情况,我们没有外置SD卡,那么我们安装的应用安装在哪里?自然是手机中的内置SD卡里,具体路径是这样的:
那在Android是用什么方法来获取这个路径的:
如果我们手机有外置SD卡,我们也可以把应用安装在SD卡,但移除SD卡之后就不能使用了。
不管是内置还是外置SD卡,获取路径的方法是一样:
获取SD卡根目录:Environment.getExternalStorageDirectory().getAbsolutePath();
外部Cache路径:/mnt/sdcard/android/data/com.xxx.xxx/cache 一般存储缓存数据(注:通过getExternalCacheDir()获取)
外部File路径:/mnt/sdcard/android/data/com.xxx.xxx/files 存储长时间存在的数据 (注:通过getExternalFilesDir(String type)获取, type为特定类型,可以是以下任何一种
Environment.DIRECTORY_MUSIC, Environment.DIRECTORY_PODCASTS, Environment.DIRECTORY_RINGTONES, Environment.DIRECTORY_ALARMS, Environment.DIRECTORY_NOTIFICATIONS, Environment.DIRECTORY_PICTURES, or Environment.DIRECTORY_MOVIES. )
最后提供一个工具类:
DataCleanManager.java