1

RSS フィードからブログ投稿を取得する Android アプリを開発しました。
この投稿には、ブログ投稿のタイトルと画像が含まれています。
次のコードを使用して画像キャッシュを保存しています。

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 に答える