android - 存储下载图像的位置

时间:2011-09-16 06:27:04

标签: android

在我的应用程序中,我有一些网址使用这些网址我正在从网上下载图像并在我的应用程序中使用这些图像。在哪里存储这些图像?因为我的应用程序有很多图像在那里。建议最好的方式,即这种方式没有机会得到“内存异常”。请任何人帮助我。

我使用以下方式是好还是坏。任何人都可以建议我。

  1. 使用url我正在从网上下载图像,在下载时我正在sd卡中创建这些图像的目录。使用URL名称在sd卡中保存这些图像。如果目录中存在图像名称,则该图像将从SD卡中获取。否则它将从网上下载。好吗?
  2. 谢谢

3 个答案:

答案 0 :(得分:5)

根据Android开发人员的Saving cache files,使用Context.getExternalCacheDir()(API级别8)或Environment.getExternalStorageDirectory() + /Android/data/<package_name>/cache/(API级别7或更低级别)作为存储位置缓存文件。

如果您有不同的缓存,请为每个缓存添加一个子目录。

上述两种方法都在您应用的“私有”数据空间中,并会随您的应用一起删除 - 这是一件好事,当您的应用消失时,您不希望在设备上使用空间。< / p>

另外,不要将URL direclty用作文件名,创建它的摘要/哈希并使用它,如iosched app does。这样可以避免您自己转义URL中的任何特殊字符。

答案 1 :(得分:1)

这是我在Application对象中用来创建外部缓存目录的代码

@SuppressLint("NewApi")
        private File setupExternalCacheDir() {
                    File extCacheDir;

                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO) {
                        extCacheDir = getExternalCacheDir();
                    } else {
                        extCacheDir = new File(Environment.getExternalStorageDirectory(), "/Android/data/" + getPackageName() + "/cache/");
                        extCacheDir.mkdirs();
                    }

         return extCacheDir;

     }

答案 2 :(得分:0)

如果图像太大,并且应该永久停留在设备上(当然除非用户想删除它们),这种方法是最好的。
但是,如果图像很小,并且不一定要留在设备上,我建议将它们存储在应用程序缓存中,并在用户退出应用程序后清除缓存。您甚至可以尝试在特定于应用程序的数据库中推送映像。