2012-02-23 71 views
5

目前,我有一个应用程序,它将保存临时截图,并让用户通过Facebook分享。图像保存代码或多或少如下。程序员的责任是删除临时文件

// Use external cache dir, as our image file is large (>1M) 
File outputDir = this.getExternalCacheDir(); 
File tempFile = File.createTempFile("CHEOK", "CHEOK", outputDir); 
// In Desktop's J2SE, this file will automatically be deleted, once my desktop 
// application quit. However, this is not the case for Android. My guess is, JVM 
// is not terminated, even our Android application had quit. 
tempFile.deleteOnExit(); 

我知道即使我不干我的Android应用程序(通过按系统“返回”按钮),该临时文件仍然存在,即使我们使用deleteOnExit。我的猜测是JVM尚未终止。

我可以知道,是否我们的应用程序员负责在Activity的onDestroy期间删除创建的临时文件?如果不是,常用的最佳做法是什么?

+0

我认为它没有被触发的原因是由Android如何管理记忆引起的,后退按钮并不会真正杀死应用程序,而是将其留在内存中,但只是不活跃。我的android手机SD卡空间总是变小,因为许多应用程序不会删除任何缓存/临时文件,不知道为什么,但我认为一旦你不需要它们就删除它们会更好 – 2012-02-23 08:17:28

回答

0

AFAIK是的,你有责任删除不再需要的文件(不管它们是否临时)。操作系统无法知道你的应用程序将使用该文件多久。

+0

我可以假设文件将保持该应用程序正在运行,即使其他应用程序也运行并创建了自己的临时文件? – 2013-07-30 08:54:06

+0

是的,你可以假设。 – m0skit0 2013-07-30 09:05:51

+0

请问您可以参考一下吗?此外,我已经在这里发表了一篇文章:http://stackoverflow.com/questions/17942700/do-temporary-files-get-deleted-even-while-the-app-is-running – 2013-07-30 09:15:12

1

它的每一个应用程序,以保持住房(或更确切地说,设备)清洁。 :)

话虽这么说

  • 的JVM总是尽可能Android是启动并运行运行。所以如果设备重新启动,文件应该被删除。
  • 即使应用程序已关闭,如果应用程序正在离开临时文件,用户很可能会得罪。

因此,当你完成它时,请亲自关闭临时文件。甚至不需要,直到应用程序退出!