Android 缓存目录 Context.getExternalFilesDir()和Context.getExternalCacheDir()方法

一、基础知识

应用程序在运行的过程中如果需要向手机上保存数据,一般是把数据保存在SDcard中的。

大部分应用是直接在SDCard的根目录下创建一个文件夹,然后把数据保存在该文件夹中。

这样当该应用被卸载后,这些数据还保留在SDCard中,留下了垃圾数据。

如果你想让你的应用被卸载后,与该应用相关的数据也清除掉,该怎么办呢?

通过Context.getExternalFilesDir()方法可以获取到 SDCard/Android/data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据

通过Context.getExternalCacheDir()方法可以获取到 SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据

如果使用上面的方法,当你的应用在被用户卸载后,SDCard/Android/data/你的应用的包名/ 这个目录下的所有文件都会被删除,不会留下垃圾信息。

而且上面二个目录分别对应 设置->应用->应用详情里面的”清除数据“与”清除缓存“选项

如果要保存下载的内容,就不要放在以上目录下

二、图片实例

Android/data 目录                                        Android/data/应用包名

2.、

缓存

1

2

3

4String cachePath1 =  context.getExternalCacheDir().getPath();

String cachePath2 =  context.getCacheDir().getPath();

KLog.d("cachePath1--"+ cachePath1 ) ;

KLog.d("cachePath2--"+ cachePath2 )

结果:

1

2cachePath1--/storage/emulated/0/Android/data/com.zyj.app/cache

cachePath2--/data/user/0/com.zyj.app/cache

3、模拟器缓存

context.getExternalCacheDir().getPath();    --->     /storage/emulated/0/Android/data/com.app/cache

1、这个目录可以在手机上看到,不用root , 这个目录的存在于外部SD卡上的。

2、app卸载后,这个目录的数据全部被系统清除。

总结:

context.getExternalCacheDir()  、 context.getCacheDir()

相同点:

1、相同点:都可以做app缓存目录。

2、app卸载后,两个目录下的数据都会被清空。

不同点:

1、目录的路径不同。前者的目录存在外部SD卡上的。后者的目录存在app的内部存储上。

2、前者的路径在手机里可以直接看到。后者的路径需要root以后,用Root Explorer 文件管理器才能看到。

需要注意的事项:

1、由于context.getExternalCacheDir() 的目录存在外部SD卡上的,所以在使用这个方法的时候要判断外部SD卡的状态是否可用。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17/**

* 获取app缓存路径

* @param context

* @return

*/

publicString getCachePath( Context context ){

String cachePath ;

if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())

|| !Environment.isExternalStorageRemovable()) {

//外部存储可用

cachePath = context.getExternalCacheDir().getPath() ;

}else{

//外部存储不可用

cachePath = context.getCacheDir().getPath() ;

}

returncachePath ;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 179,007评论 25 709
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 7,324评论 0 17
  • 文件存储和清理: 可以看到,当SD卡存在或者SD卡不可被移除的时候,就调用getExternalCacheDir(...
    3Q竹林阅读 2,495评论 0 2
  • 每天随手拍,留住瞬间的美好~加倍美好!我们来啦! 本周主题——【心爱之物】我们每天的美好生活,全是心爱~ 今日总结...
    水若_小水呓梦阅读 296评论 0 4
  • 我喜欢lol 喜欢爆粗口 喜欢疯狂刺激 渴望追随内心做向往的事情 那个人乖巧 文静 声音宁静温揉 没脾气 这是朋友...
    sceret阅读 252评论 0 0

友情链接更多精彩内容