2014-10-17 70 views
0

我正在开发一个应用程序,它应该能够预先下载数据集中使用的所有图像,以便应用程序可以完全脱机。有没有办法在毕加索排队下载的进度?

它应该下载约600张图片的每个500KB(共约300 MB)。

为此,我想遍历所有网址并执行毕加索提取()方法。这将获取所有图像,这非常棒。

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

我到目前为止已经发现:

  • 我可以使用目标的图像加载到。只有这样才能解码到一个Bitmap,这个Bitmap还不是必需的,而且占用了太多的资源。
  • 我可以以某种方式读取缓存文件夹来检查进度。但我认为这不是一个干净的方式...

回答

0

首先,你不应该预先加载所有图像。 如果您使用毕加索或通用图像加载程序,则它们都将缓存您的图像。这样你就可以确定(或几乎)关于OutOfMemoryException。

但如果你真的想这样做,检查通用图像装载机的LoadImage(字符串URI,ImageLoadingListener监听)所有感谢您的回复的

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 
    } 
}); 
+0

第一。这似乎也产生了位图,对吗?我只是希望它只写入磁盘,它不应该在内存中创建任何东西。 (只将字节信息从网络传递到磁盘) – 2014-10-17 14:49:50

+1

是的,你是对的。该基地在底层提供位图。所以我不知道任何图片库,只会做你期望的。也许你应该自己处理?创建将下载文件并保存它们的服务,然后将散列或其他键保存到数据库或共享首选项。 – Jakub 2014-10-17 17:34:02

+0

是的,我也认为这是现在唯一的选择。谢谢你的帮助! – 2014-10-20 07:17:42

相关问题