我想在下载时缓存一些图像,当我的应用程序再次启动时,它应该检查图像是否被缓存,否则返回图像 null ,所以我再次下载并缓存它们
我尝试使用 LRU 缓存http://developer.android.com/reference/android/util/LruCache.html但它对我不起作用,因为它适用于 API 级别 12,而我正在使用 10。这就是使用 LruCache 缓存图像的问题
其他易于采用的缓存解决方案是什么
我想在下载时缓存一些图像,当我的应用程序再次启动时,它应该检查图像是否被缓存,否则返回图像 null ,所以我再次下载并缓存它们
我尝试使用 LRU 缓存http://developer.android.com/reference/android/util/LruCache.html但它对我不起作用,因为它适用于 API 级别 12,而我正在使用 10。这就是使用 LruCache 缓存图像的问题
其他易于采用的缓存解决方案是什么
看看这个来存储你的文件: Storage options android sdk
好吧,我确实喜欢这个
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);
}