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

缓存

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/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卡的状态是否可用。

   /**
     * 获取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 ;
    }

  

 

  

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: android.content.SharedPreferences是Android中的一个API,用于为应用程序存储和读取键值对形式的数据。它提供了一种轻量级的数据存储方式,适用于存储一些简单的配置信息或用户偏好设置。 android.content.Context.getSharedPreferences()是一个Context类中的方法,用于获取一个SharedPreferences对象。ContextAndroid中很重要的一个类,代表当前应用程序的运行环境。通过Context的getSharedPreferences()方法,我们可以获取到应用程序的默认SharedPreferences,也可以通过指定名称获取到不同的SharedPreferences。 使用SharedPreferences可以方便地进行数据的存储和读取操作。它通过键值对的方式存储数据,其中键是一个唯一标识,值可以是各种基本类型的数据,如字符串、整数、布尔值等。可以通过调用SharedPreferences的edit()方法获取到一个SharedPreferences.Editor对象,通过这个Editor对象可以进行数据的写入操作。可以使用putXXX()方法将数据存储到SharedPreferences中,并通过commit()方法将修改提交保存。另外,还可以通过SharedPreferences的getXXX()方法读取已经存储的数据。 SharedPreferences适用于存储一些简单的配置信息或用户偏好设置,其存储方式是以XML文件的形式保存在应用程序的/data/data/<package name>/shared_prefs/目录下。可以通过SharedPreferences的getDefaultSharedPreferences()方法获取默认的SharedPreferences对象,它的名称是根据应用程序的包名来自动生成的。 使用SharedPreferences可以方便地进行数据的读写操作,特别适合用于存储一些简单的应用配置或用户设置。但是对于需要存储大量复杂数据结构的情况,或者需要频繁读写数据的场景,可能不太适合使用SharedPreferences,可以考虑使用其他更合适的数据存储方式,如数据库。 ### 回答2: android.content.SharedPreferences和android.content.Context.getSharedPreferences都是Android中用于实现数据持久化的工具类和方法android.content.SharedPreferences是一个接口,用于存储简单键值对数据。它提供了一种轻量级的存储方式,可以非常方便地存储和读取数据。SharedPreferences可以实现应用程序的配置信息存储,用户偏好设置的存储等功能。它的底层实现是基于XML文件的,数据存储在应用程序的沙盒目录中。 android.content.Context.getSharedPreferences是Context类的一个方法,用于获取SharedPreferences对象。Context是一个Android中的核心类,代表了应用程序的环境信息。在Android应用程序的各个组件中都可以通过Context对象获取应用程序的资源、启动新的组件、发送广播等等。通过Context.getSharedPreferences方法,我们可以获取一个SharedPreferences对象,并利用这个对象进行数据的存储和读取。 总结起来,android.content.SharedPreferences和android.content.Context.getSharedPreferences都是用于实现数据持久化的工具。SharedPreferences是数据存储的接口,它提供了简单的存储方式,可以存储键值对数据;而Context.getSharedPreferences是获取SharedPreferences对象的方法,通过Context类的实例获取SharedPreferences对象,方便进行数据的存储和读取。这两个工具的使用可以帮助开发者实现应用程序的配置数据存储、用户偏好设置的存储等功能。 ### 回答3: android.content.SharedPreferences是Android平台上用于存储和读取轻量级的键值对数据的类。它是一种基于XML文件的存储机制,可用于存储应用程序的相关配置信息、用户偏好设置等。 首先,我们需要获取SharedPreferences对象,这可以通过调用Context类的getSharedPreferences方法来实现。这个方法需要传入两个参数,一个是存储文件的名称,另一个是操作模式。 getSharedPreferences方法返回一个SharedPreferences对象,我们可以通过这个对象进行数据的读取和写入。其中,存储文件的名称是一个用于标识数据的关键词,它对应着一个XML文件,用来存储键值对数据。操作模式有多种选项,如MODE_PRIVATE、MODE_MULTI_PROCESS等,用于指定多个应用程序共享数据的方式。 一旦我们获取到了SharedPreferences对象,就可以通过它的edit方法获取一个Editor对象,从而可以进行数据的编辑操作。Editor对象提供了一系列的方法,如putBoolean、putInt、putString等,用于向SharedPreferences中写入数据。 另外,在读取数据时,我们可以通过SharedPreferences对象的getBoolean、getInt、getString等方法获取存储的数据。 总之,SharedPreferences提供了一个简单而方便的存储数据的方式,适用于各种应用场景。不过需要注意的是,SharedPreferences适合存储少量的简单数据,对于大量数据的存储,建议使用其他的存储方式,如数据库。 通过android.content.SharedPreferences和android.content.Context.getSharedPreferences方法,我们可以实现方便的存储和读取数据的功能,从而更好地满足应用程序的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值