Android 上的 JavaRx:观察是否已下载多个文件

JavaRx on Android: Observe if multiple files have downloaded

我有一个文章 ArrayList,其中每篇文章包含一张图片 url。

我还有函数 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();

尝试在单独的线程中下载每篇文章图片 url:

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