我什么时候应该删除临时图像文件?

时间:2015-07-06 20:07:44

标签: android performance temporary-files

在我的应用程序中的某个时刻,我必须保存一些临时图像文件。我尝试使用file.deleteOnExit(),经过一些研究后我发现它不能确保文件实际上会被删除。所以我尝试按照deleteOnExit()文档中列出的替代方案之一说:

  

•维护您自己要删除的文件集,并在应用程序生命周期的适当位置处理它。

我想知道,这个问题到底是什么?我试图在application.onTerminate()上删除一组文件,但结果是一样的,如果应用程序进程被终止,它将永远不会达到onTerminate()方法。

为了保持性能并安全删除临时文件,何时(何地)我应该放置我的代码来删除它们?

1 个答案:

答案 0 :(得分:2)

只要您确定不会使用它们,但不久就会使用它们。

更严重的是,您应该将它们存储在缓存目录中。您可以使用Context.getCacheDir()获得该功能。这样,如果您的清理方法最终没有被调用,用户可以从“应用程序”菜单中删除它们,或者如果需要空间,系统可能会删除它们。

您可以(并且应该)尝试在onDestroy()甚至onPause()中删除它们,具体取决于您的实施方式,但也不保证会调用它们。

您还可以在文件名中添加时间戳,并通过比较文件名(应该反映上次访问该文件的理想情况)与AlarmManagerBroadcastReceiver定期运行清理。当前时间,如果差值大于某个常数则删除它。出于性能考虑,我可能每天或每天运行几次,并且(在后台线程中)应用程序打开或相关活动开始时。