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();
}
}
しかし問題は、メモリカードが存在する場合にのみキャッシュを保存すること
ですキャッシュを保存するための両方のオプション、つまり外部ストレージ/内部ストレージのいずれかが必要です