在我的应用程序中,我有一些网址使用这些网址我正在从网上下载图像并在我的应用程序中使用这些图像。在哪里存储这些图像?因为我的应用程序有很多图像在那里。建议最好的方式,即这种方式没有机会得到“内存异常”。请任何人帮助我。
我使用以下方式是好还是坏。任何人都可以建议我。
谢谢
答案 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)
如果图像太大,并且应该永久停留在设备上(当然除非用户想删除它们),这种方法是最好的。
但是,如果图像很小,并且不一定要留在设备上,我建议将它们存储在应用程序缓存中,并在用户退出应用程序后清除缓存。您甚至可以尝试在特定于应用程序的数据库中推送映像。