【android】getCacheDir()、getFilesDir()、getExternalFilesDir()、getExternalCacheDir()的作用
getCacheDir()方法用于获取/data/data/<application package>/cache目录
getFilesDir()方法用于获取/data/data/<application package>/files目录
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
应用程序在运行的过程中如果需要向手机上保存数据,一般是把数据保存在SDcard中的。
大部分应用是直接在SDCard的根目录下创建一个文件夹,然后把数据保存在该文件夹中。
这样当该应用被卸载后,这些数据还保留在SDCard中,留下了垃圾数据。
如果你想让你的应用被卸载后,与该应用相关的数据也清除掉,该怎么办呢?
通过Context.getExternalFilesDir()方法可以获取到 SDCard/Android/data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据
通过Context.getExternalCacheDir()方法可以获取到 SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据
如果使用上面的方法,当你的应用在被用户卸载后,SDCard/Android/data/你的应用的包名/ 这个目录下的所有文件都会被删除,不会留下垃圾信息。
而且上面二个目录分别对应 设置->应用->应用详情里面的”清除数据“与”清除缓存“选项
如果要保存下载的内容,就不要放在以上目录下
-----------------------------------------------------------------------------------------------------------------------------------------------------
较优秀的程序都会专门写一个方法来获取缓存地址,如下所示:
- public String getDiskCacheDir(Context context) {
- String cachePath = null;
- if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())
- || !Environment.isExternalStorageRemovable()) {
- cachePath = context.getExternalCacheDir().getPath();
- } else {
- cachePath = context.getCacheDir().getPath();
- }
- return cachePath;
- }
可以看到,当SD卡存在或者SD卡不可被移除的时候,就调用getExternalCacheDir()方法来获取缓存路径,否则就调用getCacheDir()方法来获取缓存路径。前者获取到的就是 /sdcard/Android/data/<application package>/cache 这个路径,而后者获取到的是 /data/data/<application package>/cache 这个路径。
数据存储:
1.内存
2.内存设备--->应用名--->(cache/files/其他名字):用的少
3.内存设备--->Android--->data--->应用名--->(cache/files/其他名字):用的多
4.sd卡--->应用名--->(files/cache/其他名字):用得少
5.sd卡--->Android--->data--->应用名--->(cache/files/其他名字):用的多
参考:http://blog.csdn.NET/beihai1212/article/details/7055899
http://blog.csdn.Net/zhiyi2010/article/details/13017171
http://blog.csdn.net/guolin_blog/article/details/28863651
【android】getCacheDir()、getFilesDir()、getExternalFilesDir()、getExternalCacheDir()的作用相关推荐
- ANDROID 中UID与PID的作用与区别
ANDROID 中UID与PID的作用与区别 PID:为Process Identifier, PID就是各进程的身份标识,程序一运行系统就会自动分配给进程一个独一无二的PID.进程中止后PID被系统 ...
- Android 项目中文件夹的作用
Android 项目中文件夹的作用 1. src:存放所有的*.java源程序. 2. gen:为ADT插件自动生成的代码文件保存路径,里面的R.java将保存所有的资源ID. 3. assets:可 ...
- Android Studio 搜索快捷键不起作用
Android Studio 搜索快捷键不起作用 Ctrl + Shift + F全局查找不起作用. 原因是输入法简繁切换快捷键也是Ctrl + Shift + F,到对应输入法设置中去除简繁切换快捷 ...
- 缓存目录的区别getCacheDir()、getFilesDir()、getExternalFilesDir()、getExternalCacheDir()的作用
几行代码即可看出区别: Environment.getDataDirectory() = /data Environment.getDownloadCacheDirectory() = /cache ...
- Android布局中 android:layout_gravity=bottom为何不起作用?
在android布局时我们有时会需要将位于LinearLayout布局中的控件放在布局底部,或者是同时想将几个控件底部对齐,此时我们自然会想到使用 android:layout_gravity=&qu ...
- linux下dev目录的作用,Android/Linux根目录下常见目录作用
当adb shell进入Android系统内部后,ls会看到根目录下出现不少目录,如dev.sys.mnt等目录,对于这些目录的作用常常让人模棱两可,有必要对其学习了解. 首先要明白目录也是一种文件, ...
- android:maxHeight,android:maxWidth失效,不起作用
版权声明:本文为Zhang Phil原创文章,欢迎转载!转载请注明出处:http://blog.csdn.net/zhangphil 在Android的布局文件中,设置某一个view的最大宽和最大高, ...
- MTK的Android刷机包各个文件作用
转:http://blog.csdn.net/loongembedded/article/details/46910087 arm 平台的bootloader 方案mediatek(mt6516/65 ...
- android odex 作用,Android ROM中Odex文件的作用及介绍
细心的网友可能发现Android的ROM中有很多odex文件,相对于 APK中的dex文件而言这个odex有什么作用呢? Android123提示大家,如果你仔细观察会发现文件名时一一对应的,同时那些 ...
最新文章
- 最近面试一个6年 Java程序员,一个问题都答不上!
- 【UWP】使用 Rx 改善 AutoSuggestBox
- POJ1679判断最小生成树的唯一性
- 前后端交互概述与URL地址格式
- 尽量使用const、enum、inline代替#define
- SI 和 DI 寄存器的区别
- agpl限制了开源_不要限制您的开源项目的潜力
- Hibernate二级缓存配置
- java工程师面试经典题目整理
- 云图说|华为云自研云数据库GaussDB NoSQL,兼容多款NoSQL接口的数据库服务
- CodeSmith使用存档
- L1-003 个位数统计 (15 point(s))
- 如何区分abcd类地址_ip地址abc类怎么区分
- 获取WIN7的trustedinstaller权限
- python 安全编码代码审计
- 使用Docker容器来搭建LNMP(Nginx+Mysql+php)+Wordpress
- 固定成本、可变成本、沉没成本、机会成本
- easyExcel导出文件为空解决
- 单亲妈妈开米粉店,赚得比当白领的女儿还多,做生意一定要懂方法
- 整理一篇很全面的iOS面试题