歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android Jamendo源碼 圖片緩存實現

Android Jamendo源碼 圖片緩存實現

日期:2017/3/1 11:15:48   编辑:Linux編程

Android Jamendo源碼 圖片緩存實現 :

  1. package com.teleca.jamendo.util;
  2. import java.util.WeakHashMap;
  3. import android.graphics.Bitmap;
  4. /**
  5. * Caches downloaded images, saves bandwidth and user's
  6. * packets
  7. *
  8. * @author Lukasz Wisniewski
  9. */
  10. public class ImageCache extends WeakHashMap<String, Bitmap> {
  11. //WeakHashMap....add by gjican...
  12. private static final long serialVersionUID = 1L;
  13. public boolean isCached(String url){
  14. return containsKey(url) && get(url) != null;
  15. }
  16. }

在JamendoApplicatin中定義一個全局的getImageCache()來獲得當前應用程序圖片緩存 JamendoApplication.getInstance().getImageCache().put(mTaskUrl, bmp);

然後在每次下載圖片之前先進行判斷,看是否緩存裡存在此圖片,若有則直接顯示,否則調用DownloadTast()去下載

  1. public String doInBackground(String... params) {
  2. mTaskUrl = params[0];
  3. InputStream stream = null;
  4. URL imageUrl;
  5. Bitmap bmp = null;
  6. try {
  7. imageUrl = new URL(mTaskUrl);
  8. try {
  9. stream = imageUrl.openStream();
  10. bmp = BitmapFactory.decodeStream(stream);
  11. try {
  12. if(bmp != null){
  13. JamendoApplication.getInstance().getImageCache().put(mTaskUrl, bmp);
  14. Log.d(JamendoApplication.TAG, "Image cached "+mTaskUrl);
  15. } else {
  16. Log.w(JamendoApplication.TAG, "Failed to cache "+mTaskUrl);
  17. }
  18. } catch (NullPointerException e) {
  19. Log.w(JamendoApplication.TAG, "Failed to cache "+mTaskUrl);
  20. }
  21. } catch (IOException e) {
  22. Log.w(JamendoApplication.TAG, "Couldn't load bitmap from url: " + mTaskUrl);
  23. } finally {
  24. try {
  25. if(stream != null){
  26. stream.close();
  27. }
  28. } catch (IOException e) {}
  29. }
  30. } catch (MalformedURLException e) {
  31. e.printStackTrace();
  32. }
  33. return mTaskUrl;
  34. }
Copyright © Linux教程網 All Rights Reserved