【发布时间】:2014-05-07 16:38:26
【问题描述】:
我正在编写一个应用程序并在内部存储中使用一些临时文件,例如(/myapp/files/tmp/*)
这些文件是临时的,在应用程序退出时被视为过期。 清理此类文件有哪些好的做法?
Application 类中没有onDestroy()。活动之间的交换意味着知道活动的onDestroy 何时退出活动或应用程序并非易事。此外,例如,当应用程序崩溃时,这些都不会被调用。不保证会调用它们。
所以我在我的 Application 类实例中清理 onCreate 中的那些文件(在 onCreate 启动的 AsyncTask 中)。
但这对我来说似乎有点古怪。启动应用程序将启动一个线程以删除以前使用的不必要文件。有一个更好的方法吗?
file.deleteOnExit() 在 Android 上也不鼓励使用
【问题讨论】:
-
你可以覆盖Application类的onTerminate()。
-
@BirajZalavadia onTerminate() 似乎是一个非常非常糟糕的主意:“此方法用于模拟进程环境。它永远不会在生产 Android 设备上调用,其中进程被简单地删除杀死它们;这样做时不会执行任何用户代码(包括此回调)。"
-
那么当你想删除你的临时文件时?应用何时进入后台?
-
我希望在不再需要它们时立即删除它们,这意味着只要应用程序退出并且 vm 终止。 (不是在应用程序最小化时)我通常要求文件缓存管理的良好做法或技巧 - 例如在应用程序启动/退出时创建和删除的临时文件夹,或类似 file.deleteOnExit() 的东西安卓。
标签: android caching storage temporary-files