博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 缓存目录 Context.getExternalFilesDir()和Context.getExternalCacheDir()方法
阅读量:4519 次
发布时间:2019-06-08

本文共 1870 字,大约阅读时间需要 6 分钟。

一、基础知识

应用程序在运行的过程中如果需要向手机上保存数据,一般是把数据保存在SDcard中的。
大部分应用是直接在SDCard的根目录下创建一个文件夹,然后把数据保存在该文件夹中。
这样当该应用被卸载后,这些数据还保留在SDCard中,留下了垃圾数据。
如果你想让你的应用被卸载后,与该应用相关的数据也清除掉,该怎么办呢?

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


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

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

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

 

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

 

二、图片实例

 

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

 

                       

 

 

 

2.、

缓存

String cachePath1 =  context.getExternalCacheDir().getPath();String cachePath2 =  context.getCacheDir().getPath();KLog.d( "cachePath1--" + cachePath1 ) ;KLog.d( "cachePath2--" + cachePath2 )

结果:

cachePath1--/storage/emulated/0/Android/data/com.zyj.app/cachecachePath2--/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卡的状态是否可用。

/**     * 获取app缓存路径     * @param context     * @return     */    public String getCachePath( Context context ){        String cachePath ;        if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())                || !Environment.isExternalStorageRemovable()) {            //外部存储可用            cachePath = context.getExternalCacheDir().getPath() ;        }else {            //外部存储不可用            cachePath = context.getCacheDir().getPath() ;        }        return cachePath ;    }

  

 

  

 

转载于:https://www.cnblogs.com/zhaoyanjun/p/4530155.html

你可能感兴趣的文章
【C++】C++运行环境的搭建
查看>>
Kotlin之定义函数
查看>>
Dart泛型
查看>>
windowsclient开发--duilib显示html
查看>>
关于离职证明和竞业条款
查看>>
库存管理系统
查看>>
BZOJ 2809 APIO 2012 dispatching 平衡树启示式合并
查看>>
mavan和idea的搭建,很好的一篇文章
查看>>
springboot访问项目中某个module的图片(服务器拿不到)
查看>>
[P1329] 数列
查看>>
Research on How Tradeshow Magician Works
查看>>
LINUX 配置网络
查看>>
一个不错的git资源站点
查看>>
收缩数据库
查看>>
01_8_session
查看>>
HDU 2054 A==B? 大数
查看>>
在GNU Linux中怎样得到一个进程当前的流量
查看>>
openwrt的CBI控件简单说明
查看>>
Objective-C Category
查看>>
关于app目录的一些整理
查看>>