我想在下载时缓存一些图像,当我的应用程序再次启动时,它应该检查图像是否被缓存,因此它返回图像,否则为null,所以我再次下载并缓存它们
我尝试使用LRU Cache http://developer.android.com/reference/android/util/LruCache.html,但它对我不起作用,因为它适用于API级别12,而我正在使用10。 这是那个问题 caching images with LruCache
缓存
的其他易于采用的可能解决方案是什么?答案 0 :(得分:1)
查看此文件以存储您的文件: Storage options android sdk
答案 1 :(得分:1)
好吧我确实喜欢这个
private Bitmap getFile(String fileName) {
Bitmap file = null;
try {
FileInputStream fis;
fis = openFileInput(fileName);
file = BitmapFactory.decodeStream(fis);
fis.close();
}
catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return file;
}
protected void putFile(Bitmap bitmap, String fileName){
FileOutputStream fos;
try {
fos = openFileOutput(fileName, Context.MODE_PRIVATE);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
fos.close();
}
catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
protected String doInBackground(Void... params) {
for (int i = 0; i < HomeActivity.globalObj.categoriesList.size(); i++) {
Bitmap b;
b = getFile(HomeActivity.globalObj.categoriesList.get(i).name);
if (b == null) {
b = getImageBitmap(HomeActivity.globalObj.categoriesList.get(i).large_image);
putFile(b, HomeActivity.globalObj.categoriesList.get(i).name);
}
ImageView iv = new ImageView(getApplicationContext());
iv.setImageBitmap(b);
imageViewList.add(iv);
}