2015-08-08 22 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(); 
相關問題