package com.linangran.tgfcapp.utils; import android.os.AsyncTask; import com.linangran.tgfcapp.tasks.ImageDownloadTask; import java.util.HashMap; import java.util.List; /** * Created by linangran on 30/1/15. */ public class ImageDownloadManager { private ImageDownloadManager() { this.downloadTaskHashMap = new HashMap<String, ImageDownloadTask>(); } private static ImageDownloadManager instance; private HashMap<String, ImageDownloadTask> downloadTaskHashMap; public static ImageDownloadManager getInstance() { if (instance == null) { instance = new ImageDownloadManager(); } return instance; } public void addTask(ImageDownloadTask imageDownloadTask) { if (this.downloadTaskHashMap.containsKey(imageDownloadTask.getSourceURL())) { ImageDownloadTask task = this.downloadTaskHashMap.get(imageDownloadTask.getSourceURL()); if (imageDownloadTask.drawableInfo != null) { task.setDrawableInfo(imageDownloadTask.drawableInfo); } return; } synchronized (this.downloadTaskHashMap) { this.downloadTaskHashMap.put(imageDownloadTask.getSourceURL(), imageDownloadTask); } } public void startTask(String url) { ImageDownloadTask task = this.downloadTaskHashMap.get(url); if (task != null && task.getStatus().equals(AsyncTask.Status.PENDING)) { task.execute(); } } public void cancelTasks(List<String> list) { synchronized (this.downloadTaskHashMap) { for (int i = 0; i < list.size(); i++) { ImageDownloadTask task = this.downloadTaskHashMap.get(list.get(i)); if (task != null && task.getStatus().equals(AsyncTask.Status.RUNNING)) { task.cancel(true); } downloadTaskHashMap.remove(list.get(i)); } } } public void finishTask(String url) { synchronized (this.downloadTaskHashMap) { ImageDownloadTask task = this.downloadTaskHashMap.get(url); if (task != null) { this.downloadTaskHashMap.remove(url); } } } }