【问题标题】:Using UniversalImageLoader with authorization授权使用 UniversalImageLoader
【发布时间】:2023-03-18 23:25:02
【问题描述】:

在我的应用中,一些图像受授权层保护。

下载过程为:

  1. 尝试从 uri 下载图片
  2. 如果授权失败,请获取授权 uri 并重试。

问题是:

  1. 没有重试方法,所以我不能用新的uri再试一次
  2. 图像由 uri (?) 缓存,因此我无法从授权 uri 保存图像,因为它来自未授权的基本 uri,因此我的授权图像将始终重新下载。

有什么简单的方法可以解决吗?

【问题讨论】:

标签: android universal-image-loader


【解决方案1】:

您应该实现自己的ImageDownloader(最好扩展BaseImageDownloader)来处理这种情况。它应该检查是否需要身份验证,然后重新查询。

【讨论】:

  • 另外,我扩展了HashCodeFileNameGenerator,为同一图像的所有uri返回相同的名称(未授权和所有授权)。不幸的是,我不能对内存缓存做同样的事情,但这对我来说并不是最重要的。
  • 是的,您还不能更改内存缓存密钥生成机制。此功能计划在不久的将来发布。
【解决方案2】:
loader.displayImage(beans.get(position).getImagePath(), holder.imageView, options,
                new ImageLoadingListener() {

                    @Override
                    public void onLoadingStarted(String imageUri, View view) {

                    }

                    @Override
                    public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
                        //try again here with another URI.

                    }

                    @Override
                    public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {


                    }

                    @Override
                    public void onLoadingCancelled(String imageUri, View view) {
                        // TODO Auto-generated method stub

                    }
                });

【讨论】:

  • 没有办法重试。如果我再次调用displayImage,我将丢失除 uri 之外的所有参数(我想要通用方法)。此外,图像不会从内存/磁盘加载,因为 uri 会改变。
  • 哪些参数会丢失?它会自动将您的图像从您的 URI 缓存到存储卡
  • 此方法大约有 5 个参数,在您的示例中选项将丢失(您无法从侦听器访问选项)。它将被缓存在授权的URI下,所以每次我想显示它时,加载器都会尝试下载,会失败,重试并在新的授权URI下下载
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-15
  • 1970-01-01
  • 1970-01-01
  • 2012-05-11
  • 1970-01-01
  • 2018-07-05
相关资源
最近更新 更多