【发布时间】: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