【问题标题】:Is it programmer responsibility to delete temp file删除临时文件是程序员的责任吗
【发布时间】:2012-02-23 08:10:27
【问题描述】:

目前,我有一个应用程序,它将保存一个临时屏幕截图,并让用户通过 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,tempFile 仍然存在。我的猜测是 JVM 还没有终止。

请问,在 Activity 的onDestroy 期间删除创建的临时文件是我们的应用程序程序员的责任吗?如果不是,常见的最佳做法是什么?

【问题讨论】:

  • 我认为它没有被触发的原因是Android管理内存的方式,后退按钮不会真正杀死应用程序,而是将其留在内存中但只是不活动。我的 android 手机 SD 卡空间总是变小,因为很多应用程序不会删除任何缓存/临时文件,不知道为什么,但我认为最好在不需要它们时删除它们

标签: android


【解决方案1】:

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

【讨论】:

  • 我可以假设只要应用程序正在运行,即使其他应用程序也运行并创建自己的临时文件,该文件也会保留吗?
  • 是的,你可以假设。
  • 你能提供一个参考吗?另外,我在这里发了一个帖子:stackoverflow.com/questions/17942700/…
【解决方案2】:

它取决于每个应用程序来保持房屋(或更确切地说是设备)的清洁。 :)

这么说

  • 只要 android 启动并运行,JVM 就一直在运行。因此,如果设备重新启动,文件应该会被删除。
  • 如果应用程序在关闭应用程序后仍留下临时文件,用户很有可能会被冒犯。

因此,当您完成临时文件时,请自行关闭它。甚至在应用退出之前都不需要!

【讨论】:

    猜你喜欢
    • 2016-03-18
    • 2011-08-25
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    • 2013-07-30
    • 2016-01-04
    • 2013-04-20
    相关资源
    最近更新 更多