如何在android中退出app时删除createTempFile创建的所有临时文件?

Hel*_*oCW 11 java android

我使用以下代码创建一些临时文件,并将tem包装为inputteam以发送到客户端.

据我所知,当磁盘空间不足时,android系统可以自动删除临时文件.

但我希望当我退出应用程序时,我可以自己删除临时文件,我该怎么办?谢谢!

File outputDir = context.getCacheDir(); // context being the Activity pointer
File outputFile = File.createTempFile("prefix", "extension", outputDir);
Run Code Online (Sandbox Code Playgroud)

Ate*_*res 7

打电话给deleteOnExit()方法!

要么

delete()onStop()你的活动中调用方法.

编辑:

如果你叫这可能是更好delete()onDestroy(),以确保您的代码的工作,即使应用程序是由系统破坏.

  • 谢谢!但deleteOnExit()"请注意,在Android上,应用程序生命周期不包括VM终止,因此调用此方法将无法确保删除文件.相反,您应该使用最合适的: (3认同)

Jar*_*ler 7

删除文件onDestroy,如果isChangingConfigurations()false或者isFinishingtrue.例:

@Override protected void onDestroy() {
  super.onDestroy();
  if(!isChangingConfigurations()) {
    deleteTempFiles(getCacheDir());
  }
}

private boolean deleteTempFiles(File file) {
  if (file.isDirectory()) {
    File[] files = file.listFiles();
    if (files != null) {
      for (File f : files) {
        if (f.isDirectory()) {
          deleteTempFiles(f);
        } else {
          f.delete();
        }
      }
    }
  }
  return file.delete();
}
Run Code Online (Sandbox Code Playgroud)