2015-08-08 75 views
1

我有一篇文章ArrayList,其中每篇文章都包含一个图片url。Android上的JavaRx:观察是否有多个文件已下载

此外,我有功能downloadImage(url),它下载并保存图像从一个URL到设备。

现在我想下载每篇文章的所有图像(每次下载都在它自己的线程中?),并在所有图像下载时继续执行操作。

我该如何用RX做到这一点?

谢谢!

编辑: 感谢戴夫的答案。它做到了这一点,但有一件事我必须纠正:如果你有一个不可迭代的对象(比如Article就是我的情况),你需要使用Observable.just()而不是Observable.from()。

Observable 
.from(articles) 
.flatMap(article -> 
    Observable 
     .just(article) 
     .doOnNext(a -> downloadImage(a.imageUrl)) 
     .subscribeOn(Schedulers.io()) 
) 
.doOnError(t -> logError(t)) 
.subscribe(); 

回答

3

试试这个下载每个物体图像的URL在一个单独的线程:

Observable 
    .from(articles) 
    .flatMap(article -> 
     Observable 
      .from(article) 
      .doOnNext(a -> downloadImage(a.imageUrl)) 
      .subscribeOn(Schedulers.io()) 
    ) 
    .doOnError(t -> logError(t)) 
    .subscribe();