【问题标题】:How to stop download of a single image如何停止下载单个图像
【发布时间】:2015-05-19 15:06:55
【问题描述】:

我正在创建一个应用程序,用户从回收站视图中选择一个项目,这将开始下载一组图像。

我正在使用universal image loader's loadImage 方法为我获取图像,效果很好。

问题是,如果用户想取消下载这组图像(可能会非常消耗网络),我无法找到让 ui 仅停止部分图像的方法。

我知道ImageLoader.cancelDisplayTask() 方法,但由于我使用的是loadImage,因此我没有ImageViewImageAware 可作为参数发送给此任务。

另外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 事件开始下载的处理程序代码、使用的数据模型以及正在执行下载的异步任务/可运行/等的实现。

标签: android android-activity universal-image-loader


【解决方案1】:
private ArrayList<ImageLoader> images = new ArrayList<ImageLoader>();

images.remove():

?不熟悉 ImageLoader 类,但我希望这会有所帮助

这些可能会有所帮助

android: Universal Image Loader get drawable from string array

How to change array list to string array for using Universal Image Loader?

https://github.com/nostra13/Android-Universal-Image-Loader/issues/109

【讨论】:

    【解决方案2】:

    我设法通过一个小变通方法解决了这个问题。

    我找不到取消特定ImageLoader.loadImage() 的方法,所以我必须使用普通的ImageLoader.displayImage(),通过传递NonViewAware 类代替所需的图像视图作为参数。

    然后我将此NonViewAware 添加到ArrayList&lt;NonViewAware&gt; 中,以跟踪正在下载哪些图像。

    最后,当我想取消一个显示任务时,我只是调用了ImageLoader.cancelDisplayTask(NonViewAware) 并使用列表中的一个存储项目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-22
      • 2012-05-10
      • 1970-01-01
      • 2021-12-20
      • 1970-01-01
      • 2011-02-05
      • 2010-10-27
      相关资源
      最近更新 更多