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();
我有一个文章 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();