有什么东西是从getExternalFilesDir()删除图像文件?

时间:2016-07-12 15:16:03

标签: android

我很难弄清楚我的应用程序发生了什么。各种用户报告说,应用程序生成的图像文件已经消失。但是,数据库数据没有消失,它存储在公共位置Context.getDatabasePath()。此外,所有文件夹都保持不变,只是缺少图像。

所以我认为Android中有一些常规导致这种情况?或者其他一些app清理* .png文件?我知道我的应用程序没有删除它们,因为我没有任何递归删除所有图像文件的例程。

此外,父文件夹中有.nomedia文件,因此画廊不应该触及所有子文件夹吗?

我将这些文件存储在以下路径结构中,其中%d是唯一编号:

  

getExternalFilesDir()/项目/ P_%d / L_%d /%d.png

这就是我创建项目路径的方式:

public static File getProjectsDir(Context context)
{
    // External app directory handled by the OS. Meaning that when the app is uninstalled all
    // the data inside this folder will be also removed.
    File appRoot = context.getExternalFilesDir(null);
    if (null == appRoot) {
        Log.e(TAG,"getProjectsDir() -> External storage not accessible!");
        return null;
    }

    File projectsDir = new File(appRoot, "projects");

    // create projects directory
    if (!projectsDir.exists()) {
        if (!projectsDir.mkdir()) {
            Log.e(TAG,"getProjectsDir() -> Unable to create projects folder!");
            return null;
        } else {
            File noMediaFile = new File(projectsDir, ".nomedia");
            if (!noMediaFile.exists()) {
                try {
                    if (!noMediaFile.createNewFile()) {
                        Log.e(TAG,"getProjectsDir() -> no media file failed to be created!");
                    }
                } catch (IOException e) {
                    Log.e(TAG,"getProjectsDir() -> no media file failed to be created!",e);
                }
            }
        }
    }

    return projectsDir;
}

1 个答案:

答案 0 :(得分:0)

根据this,看来DownloadManager会删除超过7天未访问(即“ UI可见”)的第三方应用程序中的所有文件。

解决方法是在下载文件后重命名文件,以便DownloadManager不再跟踪它。