我正在創建一個應用程序,用戶從回收站視圖中選擇一個項目,並開始下載一組圖像。如何停止下載單個圖像
我正在使用universal image loader's
loadImage方法爲我提取的圖像效果很好。
問題是,如果用戶想要取消下載這組圖像(可能非常耗費網絡資源),我找不到一種方法使ui僅停止一些圖像。
我知道的方法ImageLoader.cancelDisplayTask()
的,但我使用loadImage
我沒有ImageView
或ImageAware
可用於發送作爲參數傳遞給這個任務。
還ImageLoader.stop()
或ImageLoader.pause()
停止所有當前的下載,我只想停止用戶選擇的。
我該如何做到這一點?
PS:在使用loadImage
方法時,對於某些未來開發的建議將返回下載任務的指針。當我有時間爲這個精彩的圖書館做出貢獻時,也許我會自己去看看。
這裏是我下載圖片的代碼。
private void downloadFile(final URL downloadURL,
final URL destinationURL,
final boolean isThumbnail,
final MyDownloadListener listener) {
final NewsData thisClass = this;
final ImageLoader il = ImageLoader.getInstance();
File imageFile = il.getDiskCache().get(destinationURL.toString());
if (imageFile.exists()) {
fallDownloadCompleted(this, isThumbnail);
return;
}
il.stop();
il.loadImage(
downloadURL.toString(),
null,
Application.getAppDisplayOptions(),
new SimpleImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
if (listener != null) {
listener.onLoadingStarted(thisClass);
}
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
fallDownloadFail(thisClass, failReason, isThumbnail);
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
try {
il.getDiskCache().save(destinationURL.toString(), loadedImage);
if (isToday()) deleteImageFile(imageUri);
} catch (IOException e) {
deleteImageFile(imageUri);
fallDownloadFail(
thisClass,
new FailReason(FailReason.FailType.IO_ERROR, new Throwable()),
isThumbnail);
return;
}
fallDownloadCompleted(thisClass, isThumbnail);
}
},
new ImageLoadingProgressListener() {
@Override
public void onProgressUpdate(String imageUri, View view, int current, int total) {
float progress = 0;
if (total > 0 && numberOfTotalPages > 0) {
if (!isThumbnail) {
progress = numberOfAvailablePages/(float) numberOfTotalPages;
progress += (current/(float) total)/numberOfTotalPages;
} else {
progress = current/(float) total;
}
}
if (listener != null) {
listener.onProgressUpdate(thisClass, progress);
}
}
});
}
請提供您的代碼!最小化ui事件開始下載的處理程序代碼,使用的數據模型以及執行下載的異步任務/可運行/等。 –