1

我开发了一个 android 应用程序,它可以从 RSS 提要中检索博客文章。
这篇文章包含博客文章的标题和图片。
我正在使用以下代码保存图像缓存:

public class FileCache {

private File cacheDir;

public FileCache(Context context) {
    // Find the dir to save cached images
    if (android.os.Environment.getExternalStorageState().equals(
            android.os.Environment.MEDIA_MOUNTED))
        cacheDir = new File(
                android.os.Environment.getExternalStorageDirectory(),
                "LazyList");
    else
        cacheDir = context.getCacheDir();
    if (!cacheDir.exists())
        cacheDir.mkdirs();
}

public File getFile(String url) {
    // I identify images by hashcode. Not a perfect solution, good for the
    // demo.
    String filename = String.valueOf(url.hashCode());
    // Another possible solution (thanks to grantland)
    // String filename = URLEncoder.encode(url);
    File f = new File(cacheDir, filename);
    return f;

}

public void clear() {
    File[] files = cacheDir.listFiles();
    if (files == null)
        return;
    for (File f : files)
        f.delete();
}

}

但问题是它只在存储卡存在时才保存缓存
我想要两种保存缓存的选项,即外部存储/内部存储

4

1 回答 1

0

您只是检查 getExternalStorage 状态是否存在,并且您仅在 SD 卡中创建了缓存目录...尝试使用以下条件:

final String cachePath =
        Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) ||
                !isExternalStorageRemovable() ? getExternalCacheDir(context).getPath() :
                        context.getCacheDir().getPath();

return new File(cachePath + File.separator + uniqueName);
于 2014-10-03T10:34:11.143 回答