【问题标题】:Is there a way get the progress of the queued downloads in Picasso?有没有办法在 Picasso 中获取排队下载的进度?
【发布时间】:2014-10-17 21:51:31
【问题描述】:

我正在开发一个应用程序,它应该能够预先下载数据集中使用的所有图像,以便该应用程序可以完全离线运行。

它应该下载大约 600 张图片,每 500KB(总共约 300MB)。

为此,我想遍历所有 url 并执行 Picasso fetch() 方法。这将获取所有图像,这很棒。

我唯一缺少的是一种查看所有图像下载的进度的方法。有什么方法可以查看毕加索的下载队列的进度吗?这样我可以在下载完成时通知用户,并告知当前状态。

到目前为止我发现了什么:

  • 我可以使用 Target 将图像加载到其中。只有这也会解码为位图,这还不是必需的并且占用太多资源。
  • 我可以通过某种方式读取缓存文件夹来检查进度。但我认为这不是一个干净的方式......

【问题讨论】:

    标签: android caching queue picasso imagedownload


    【解决方案1】:

    首先,您不应该预加载所有图像。 如果您使用的是 Picasso 或 Universal Image Loader,那么它们都会缓存您的图像。这样您就可以确定(或几乎)OutOfMemoryException。

    但如果你真的想这样做,请检查 Universal Image Loader loadImage(String uri, ImageLoadingListener listener)

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

    imageLoader.loadImage(imageUri, new SimpleImageLoadingListener() {
        @Override
        public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
           // Do whatever you want with Bitmap
         }
    });
    

    【讨论】:

    • 首先感谢您的回复。似乎这也生成了位图,对吗?我只希望它只写入磁盘,它不应该在内存中创建任何东西。 (仅将字节信息从网络传递到磁盘)
    • 是的,你是对的。引擎盖下的基因位图。所以我不知道有什么图片库可以满足你的期望。也许你应该自己处理?创建将下载文件并保存它们的服务,然后将哈希值或其他密钥保存到数据库或共享首选项。
    • 是的,我也认为这是现在唯一的选择。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-20
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    相关资源
    最近更新 更多