美文网首页
Android文件存储

Android文件存储

作者: 我想成为创业者 | 来源:发表于2017-06-21 14:47 被阅读0次
    网上找的截图

    由图可以看出
    Environment.getExternalStorageDirectory()方法存储6.0以后需要用户授权,在该方法下app卸载之后数据还保留在SDCard中,留下了垃圾数据。

    Context.getExternalFilesDir()Context.getExternalCacheDir()getFilesDir()getCacheDir()相同点:

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

    Context.getExternalFilesDir()Context.getExternalCacheDir()getFilesDir()getCacheDir()不同点:

    1. 目录的路径不同:前两个的目录在外部SD卡上。后两个的目录在app内部存储上。
    1. 前两个的路径在手机里可以直接看到。后两个的路径需要root以后,用Root Explorer 文件管理器才能看到。
    2. Context.getExternalFilesDir()和getFilesDir()用来存储一些长时间保存的数据(手机助手在清理垃圾时不会清理掉),Context.getExternalCacheDir()、getCacheDir()用来存储一些临时缓存数据(手机助手在清理垃圾时能清理掉)
    /**获取app缓存路径
    */
    publicStringgetCachePath(Contextcontext) {
        String  cachePath;
        if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) || !Environment.isExternalStorageRemovable()) {
            cachePath = context.getExternalCacheDir().getPath();//外部存储可用
        }else{
            cachePath = context.getCacheDir().getPath();//外部存储不可用
        }
        returncachePath;
    }
    

    个人遇到的问题

    • 在版本更新是使用getFilesDir或getCacheDir为存储路径出现解析包错误问题,解决办法
    //修改apk权限
    public static voidchmod(Stringpermission,Stringpath) {
      try{
        String command ="chmod "+ permission +" "+ path;
        Runtime runtime =Runtime.getRuntime();
        runtime.exec(command);
        }catch(IOExceptione) {
         e.printStackTrace();
       }
    }
    
    private void installApk() {
        chmod("777",apkFile.getPath());
        Intent intent =new Intent(Intent.ACTION_VIEW);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.setDataAndType(Uri.fromFile(apkFile),"application/vnd.android.package-archive");
        startActivity(intent);
    }
    
    • 使用getCacheDir保存数据,但是用户反馈第二天数据丢失
      原因:用户安装了手机助手,开启了定时清理垃圾数据,使用Context.getExternalCacheDir()getCacheDir()保存的数据会被认为是垃圾然后被清理,应使用Context.getExternalFilesDir()getFilesDir()来存储一些长时间保存的数据

    相关文章

      网友评论

          本文标题:Android文件存储

          本文链接:https://www.haomeiwen.com/subject/qbxtcxtx.html