RxJava flatMap使用
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使用相关推荐
- RxJava flatMap操作符用法详解
RxJava系列文章目录导读: 一.RxJava create操作符的用法和源码分析 二.RxJava map操作符用法详解 三.RxJava flatMap操作符用法详解 四.RxJava conc ...
- RxJava flatMap,switchMap,concatMap
In this tutorial, we'll be looking into three important map operators in RxJava. FlatMap, SwitchMap, ...
- RxJava(七) 使用 debounce 操作符优化 App 搜索功能
RxJava 系列文章目录导读: 一.RxJava create 操作符的用法和源码分析 二.RxJava map 操作符用法详解 三.RxJava flatMap 操作符用法详解 四.RxJava ...
- RxJava 2.x 优秀学习资源
说明:本文主要是记录Rxjava 2.x 网上优秀博客 链接,便于学习所用. Rxjava2.x GitHub链接 https://github.com/ReactiveX/RxJava RxAndr ...
- Android 程序员的技术栈大全
AndroidAll 项目地址:chiclaim/AndroidAll 简介: Android 程序员的技术栈大全 更多:作者 提 Bug 标签: 内容涵盖绝大部分 Android 程序员所需要 ...
- jenkins android md5,Jenkins配置自动打包 -- 遇到的坑
1.把gradle路径设为本地路径 Jenkins部署在远程linux服务器上,使用git将代码下载到服务器路径下后,无法使用gradle命令 因为默认配置都是gradle同步时 实时从网上下载,进入 ...
- 找到了一个非常好的安卓开发技术栈导航
最全的 Android 技术栈 这个大佬写的非常好,并且整理了所有相关的知识和内容到github上,需要的盆友可以按照自己的需求去嫖.感谢大佬,后面会按照这个文章整理自己的不足,补齐短板知识点. 内容 ...
- 并发查询parallel_惯用并发:flatMap()与parallel()– RxJava常见问题解答
并发查询parallel 简单,有效和安全的并发是RxJava的设计原则之一. 然而,具有讽刺意味的是,它可能是该库中最容易被误解的方面之一. 让我们举一个简单的例子:假设我们有一堆UUID并且对于每 ...
- flatMap()与concatMap()与concatMapEager()– RxJava常见问题解答
RxJava 2.x中共有三个无缝相似的运算符: flatMap() , concatMap()和concatMapEager() . 它们都接受相同的参数-从原始流的单个项目到任意类型的(子)流的函 ...
最新文章
- 刚刚!最新大学专业排名出炉:北大、清华和浙大居前三!
- 应用程序服务器和Web服务器之间有什么区别?
- eclipse 不能将maven jar包导入到tomcat中问题
- mycat mysql端口多少_mycat 9066管理端口 常用命令
- java windows 取所有任务_Win下,通过Jstack截取Java进程中的堆栈信息
- Linux C实现简单的shell
- 【Shell】特殊变量
- 【渝粤教育】国家开放大学2018年春季 0077-22T古代汉语专题 参考试题
- oracle循环视频教程,Oracle高清视频课程全45集,赶紧收藏吧!
- 京东数科主导的首个Apache基金会项目ShardingSphere进入孵化器
- html下划线无阴影效果,CSS | 实现下划线的N个姿势
- Unity3d将资源打包成AssetBundle 读取后材质球丢失的问题
- 『互联网架构』软件架构-软件环境的持续发布管理(上)
- 一圆形游泳池如图所示,现在需在其周围建一圆形过道,并在其四周围上栅栏。栅栏价格为35元/米,过道造价为20元/平方米。过道宽度为3米,游泳池半径由键盘输入。要求编程计算并输出过道和栅栏的造价。
- MTK Android Driver:PMIC
- 思想,坚持,信仰,一切
- 面试题详解:如何用Redis实现分布式锁?
- 导出浏览器cookie
- Springboot 中的Redis 事务使用
- scrapy爬虫之抓取《芳华》短评及词云展示
热门文章
- webmail邮件服务器搭建_U-Mail邮件服务器
- 菲律宾LAZADA代运营选品推荐—100%动销率的高需求行业!你是否忽略了这类产品!
- rust怎么建莲花房_还在傻傻的贴壁纸?用这种涂料,自动形成一朵花,太聪明了!...
- php 读取pdf文件内容 显示乱码,PHP读取文件,解决中文乱码UTF-8的方法分析
- SGD、Momentum、 AdaGrad、Adam
- file java mkdirs_java – 忽略’File.mkdirs()’的结果
- windows中利用放大镜留下后门
- 基于matlab的粒子群算法实现
- tensorboard无法访问:被拒绝访问的解决方法,无法访问此网站,locallost拒绝了我们的请求
- paddlehub如何查看其版本号