我很难弄清楚我的应用程序发生了什么。各种用户报告说,应用程序生成的图像文件已经消失。但是,数据库数据没有消失,它存储在公共位置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;
}
答案 0 :(得分:0)
根据this,看来DownloadManager会删除超过7天未访问(即“ UI可见”)的第三方应用程序中的所有文件。
解决方法是在下载文件后重命名文件,以便DownloadManager不再跟踪它。