【问题标题】:Using the Internal Storage - Android - Deleting Cache Files使用内部存储 - Android - 删除缓存文件
【发布时间】:2012-01-04 05:22:24
【问题描述】:

我正在下载图像,然后将它们保存到内存中。这导致应用的缓存增长非常快。

正如这里所建议的:

http://developer.android.com/guide/topics/data/data-storage.html

当设备内部存储空间不足时,Android 可能会删除这些缓存文件以恢复空间。但是,您不应依赖系统为您清理这些文件。您应该始终自己维护缓存文件并保持在合理的空间消耗限制内,例如 1MB

我的问题是如果缓存变得太大会发生什么,例如现在大约 20mb 并且还在增长。

我认为如果互联网连接可用,我应该遵循指南并在每次我的应用启动时将其删除。

 String[] allFiles =  fileList();

 Log.e(TAG, "allFiles.length: " + allFiles.length);


 for(int k=0; k<allFiles.length; k++)
 {
 Log.e(TAG, "allFiles [ " +k+"]: "+allFiles[k]);

 }

但是,此代码始终返回零个文件。如果我尝试访问特定图像,我可以轻松地从内部存储器中检索它。为什么这段代码不能返回包含我所有图像的数组??

内部存储器的正确方法是什么..

提前致谢,

安德烈亚斯

【问题讨论】:

  • 您的整个文件名检索逻辑在您未包含的fileList() 中。如果您不发布该代码,我们无法知道为什么这不起作用。
  • 我可以毫无问题地单独访问每个图像(文件名)!问题是当我想按照上面链接中的建议获取内部存储器中所有文件的列表时。上面的方法总是返回零!
  • 啊,我的错。我不知道fileList() 在上下文中。反正我不会为此烦恼。如果您存储在来自getCacheDir 的文件夹中,则只需使用getCacheDir().listFiles()

标签: android caching storage internal


【解决方案1】:

昨天有人问了类似的问题。 Here's my answer 给那个。不过,它的一些相关关键点是,您可以限制整个缓存大小和/或限制将文件保留在缓存中的时间,这应该可以解决您的问题。

【讨论】:

  • 感谢您的回答。关键是如何在不使用存储 url 散列的 txt 的情况下访问这些文件并放置 ttl?以及我应该如何限制大小。我们一直在谈论内部存储器!
  • 正如我在您的主要帖子上评论的那样,如果您不发布相关行,就无法知道您的代码有什么问题......至于限制大小,您可以执行类似的操作使用 LruCache,覆盖 sizeOf 方法以返回缓存文件的大小,然后从缓存中删除文件。 developer.android.com/reference/android/util/LruCache.html
  • 我很抱歉,但这与我的要求完全无关......我的问题是,即使按照 android 开发人员网站的建议存在,文件上面的代码也没有列出。还是谢谢你的回答
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-26
相关资源
最近更新 更多