RxJava flatMap使用

1、使用场景
首先从一个接口中获取list,然后根据获取到list中的元素信息,再获取每个元素的详细信息
2、以下是代码片段(仅笔记于此)
String albumUrl = “http://m.kugou.com/zlist/list
?listid=2&type=0&uid=89255811
&sign=495dc043c2b3ac9f38e5f09d6d0bbef2
&_t=598024727&pagesize=100&json=&from=pcCode&page=1&share_type=collect”;
String musicPath = “D:\Music”; //表示存储路径
File file = new File(musicPath);
if (!file.exists()) {
file.mkdirs();
}
RxHttp.getInstance().getSyncServer()
.musicList(albumUrl)
.flatMap((Function<JSONObject, ObservableSource>) jsonObject -> {
List list = JSONObject.parseArray(jsonObject.getString(“info”), MusicItem.class);
return Observable.fromIterable(list);
})
.flatMap((Function<MusicItem, ObservableSource>) musicItem -> {
musicFile = new File(file.getAbsolutePath(), musicItem.getName() + “.mp3”);
return RxHttp.getInstance()
.getSyncServer()
.downloadMusic(musicItem);
})
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.newThread())
.subscribe(responseBody -> {
try {
InputStream is = responseBody.byteStream();
FileOutputStream fos = null;
fos = new FileOutputStream(musicFile);
BufferedInputStream bis = new BufferedInputStream(is);
byte[] buffer = new byte[1024];
int len;
while ((len = bis.read(buffer)) != -1) {
fos.write(buffer, 0, len);
}
fos.flush();
fos.close();
bis.close();
is.close();
} catch (IOException e) {
e.printStackTrace();
System.out.print(e.getMessage());
}
}, throwable -> {
System.out.print(throwable.getMessage());
});

RxJava flatMap使用相关推荐

  1. RxJava flatMap操作符用法详解

    RxJava系列文章目录导读: 一.RxJava create操作符的用法和源码分析 二.RxJava map操作符用法详解 三.RxJava flatMap操作符用法详解 四.RxJava conc ...

  2. RxJava flatMap,switchMap,concatMap

    In this tutorial, we'll be looking into three important map operators in RxJava. FlatMap, SwitchMap, ...

  3. RxJava(七) 使用 debounce 操作符优化 App 搜索功能

    RxJava 系列文章目录导读: 一.RxJava create 操作符的用法和源码分析 二.RxJava map 操作符用法详解 三.RxJava flatMap 操作符用法详解 四.RxJava ...

  4. RxJava 2.x 优秀学习资源

    说明:本文主要是记录Rxjava 2.x 网上优秀博客 链接,便于学习所用. Rxjava2.x GitHub链接 https://github.com/ReactiveX/RxJava RxAndr ...

  5. Android 程序员的技术栈大全

    AndroidAll 项目地址:chiclaim/AndroidAll  简介: Android 程序员的技术栈大全 更多:作者   提 Bug 标签: 内容涵盖绝大部分 Android 程序员所需要 ...

  6. jenkins android md5,Jenkins配置自动打包 -- 遇到的坑

    1.把gradle路径设为本地路径 Jenkins部署在远程linux服务器上,使用git将代码下载到服务器路径下后,无法使用gradle命令 因为默认配置都是gradle同步时 实时从网上下载,进入 ...

  7. 找到了一个非常好的安卓开发技术栈导航

    最全的 Android 技术栈 这个大佬写的非常好,并且整理了所有相关的知识和内容到github上,需要的盆友可以按照自己的需求去嫖.感谢大佬,后面会按照这个文章整理自己的不足,补齐短板知识点. 内容 ...

  8. 并发查询parallel_惯用并发:flatMap()与parallel()– RxJava常见问题解答

    并发查询parallel 简单,有效和安全的并发是RxJava的设计原则之一. 然而,具有讽刺意味的是,它可能是该库中最容易被误解的方面之一. 让我们举一个简单的例子:假设我们有一堆UUID并且对于每 ...

  9. flatMap()与concatMap()与concatMapEager()– RxJava常见问题解答

    RxJava 2.x中共有三个无缝相似的运算符: flatMap() , concatMap()和concatMapEager() . 它们都接受相同的参数-从原始流的单个项目到任意类型的(子)流的函 ...

最新文章

  1. 刚刚!最新大学专业排名出炉:北大、清华和浙大居前三!
  2. 应用程序服务器和Web服务器之间有什么区别?
  3. eclipse 不能将maven jar包导入到tomcat中问题
  4. mycat mysql端口多少_mycat 9066管理端口 常用命令
  5. java windows 取所有任务_Win下,通过Jstack截取Java进程中的堆栈信息
  6. Linux C实现简单的shell
  7. 【Shell】特殊变量
  8. 【渝粤教育】国家开放大学2018年春季 0077-22T古代汉语专题 参考试题
  9. oracle循环视频教程,Oracle高清视频课程全45集,赶紧收藏吧!
  10. 京东数科主导的首个Apache基金会项目ShardingSphere进入孵化器
  11. html下划线无阴影效果,CSS | 实现下划线的N个姿势
  12. Unity3d将资源打包成AssetBundle 读取后材质球丢失的问题
  13. 『互联网架构』软件架构-软件环境的持续发布管理(上)
  14. 一圆形游泳池如图所示,现在需在其周围建一圆形过道,并在其四周围上栅栏。栅栏价格为35元/米,过道造价为20元/平方米。过道宽度为3米,游泳池半径由键盘输入。要求编程计算并输出过道和栅栏的造价。
  15. MTK Android Driver:PMIC
  16. 思想,坚持,信仰,一切
  17. 面试题详解:如何用Redis实现分布式锁?
  18. 导出浏览器cookie
  19. Springboot 中的Redis 事务使用
  20. scrapy爬虫之抓取《芳华》短评及词云展示

热门文章

  1. webmail邮件服务器搭建_U-Mail邮件服务器
  2. 菲律宾LAZADA代运营选品推荐—100%动销率的高需求行业!你是否忽略了这类产品!
  3. rust怎么建莲花房_还在傻傻的贴壁纸?用这种涂料,自动形成一朵花,太聪明了!...
  4. php 读取pdf文件内容 显示乱码,PHP读取文件,解决中文乱码UTF-8的方法分析
  5. SGD、Momentum、 AdaGrad、Adam
  6. file java mkdirs_java – 忽略’File.mkdirs()’的结果
  7. windows中利用放大镜留下后门
  8. 基于matlab的粒子群算法实现
  9. tensorboard无法访问:被拒绝访问的解决方法,无法访问此网站,locallost拒绝了我们的请求
  10. paddlehub如何查看其版本号