Android Jamendo源码 图片缓存实现
Android Jamendo源码 图片缓存实现
Android Jamendo源码 图片缓存实现 :
- package com.teleca.jamendo.util;
- import java.util.WeakHashMap;
- import android.graphics.Bitmap;
- /**
- * Caches downloaded images, saves bandwidth and user's
- * packets
- *
- * @author Lukasz Wisniewski
- */
- public class ImageCache extends WeakHashMap<String, Bitmap> {
- //WeakHashMap....add by gjican...
- private static final long serialVersionUID = 1L;
- public boolean isCached(String url){
- return containsKey(url) && get(url) != null;
- }
- }
在JamendoApplicatin中定义一个全局的getImageCache()来获得当前应用程序图片缓存 JamendoApplication.getInstance().getImageCache().put(mTaskUrl, bmp);
然后在每次下载图片之前先进行判断,看是否缓存里存在此图片,若有则直接显示,否则调用DownloadTast()去下载
- public String doInBackground(String... params) {
- mTaskUrl = params[0];
- InputStream stream = null;
- URL imageUrl;
- Bitmap bmp = null;
- try {
- imageUrl = new URL(mTaskUrl);
- try {
- stream = imageUrl.openStream();
- bmp = BitmapFactory.decodeStream(stream);
- try {
- if(bmp != null){
- JamendoApplication.getInstance().getImageCache().put(mTaskUrl, bmp);
- Log.d(JamendoApplication.TAG, "Image cached "+mTaskUrl);
- } else {
- Log.w(JamendoApplication.TAG, "Failed to cache "+mTaskUrl);
- }
- } catch (NullPointerException e) {
- Log.w(JamendoApplication.TAG, "Failed to cache "+mTaskUrl);
- }
- } catch (IOException e) {
- Log.w(JamendoApplication.TAG, "Couldn't load bitmap from url: " + mTaskUrl);
- } finally {
- try {
- if(stream != null){
- stream.close();
- }
- } catch (IOException e) {}
- }
- } catch (MalformedURLException e) {
- e.printStackTrace();
- }
- return mTaskUrl;
- }
评论暂时关闭