• 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 ;
        }
    

      

     

      

  • 相关阅读:
    leetcode41
    leetcode32
    leetcode312
    leetcode10
    leetcode85
    leetcode124
    leetcode301
    leetcode84
    一文读懂机器学习大杀器XGBoost原理
    【干货】机器学习中的五种回归模型及其优缺点
  • 原文地址:https://www.cnblogs.com/zhaoyanjun/p/4530155.html
Copyright © 2020-2023  润新知