android - Android 上的 JavaRx : Observe if multiple files have downloaded

标签 android file download rx-java

我有一个文章列表,其中每篇文章都包含一个图片 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();

关于android - Android 上的 JavaRx : Observe if multiple files have downloaded,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31893412/

相关文章:

android - 下载前如何知道文件的大小?

java - 使用 Retrofit 访问 JSON 数组

c# - 如何使用 C# 比较两个列表?

c++ - 使用堆栈的后缀评估

通过 ssh 调用 write()

c# - Response.AddHeader ("Content-Disposition") 无法在 IE6 中打开文件

android - 在 Android 中使用 'FileWriter' 写入 SD 卡上的文本文件

android - AutoCompleteTextView 下拉菜单在 Android 4+ 和 Android 5+ 中具有不同的全屏和背景颜色行为

android - 我正在 Google Analytics 上跟踪我的 Android 应用。为什么我似乎有 Macintosh 用户?

Javascript导出本地存储