RxJava flatMap使用[通俗易懂]

RxJava flatMap使用[通俗易懂]RxJavaflatMap使用1、使用场景首先从一个接口中获取list,然后根据获取到list中的元素信息,再获取每个元素的详细信息2、以下是代码片段(仅笔记于此)StringalbumUrl=“http://m.kugou.com/zlist/list?listid=2&type=0&uid=89255811&sign=495dc043c2b3ac9f…

大家好,又见面了,我是你们的朋友全栈君。

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());
});

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/136481.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Android屏幕适配AndroidAutoSize的使用「建议收藏」

    Android屏幕适配AndroidAutoSize的使用「建议收藏」Android屏幕适配AndroidAutoSize的使用AndroidAutoSize的使用加入依赖配置AndroidManifest.xml主单位或者副单位主单位的配置副单位的配置主单位的使用副单位的使用插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入AndroidAutoSize的使

    2022年5月26日
    80
  • python快捷键的使用

    python快捷键的使用

    2021年5月17日
    123
  • davinci DM365-DM368开发攻略—linux-2.6.32移植

    davinci DM365-DM368开发攻略—linux-2.6.32移植本文最始出自http://www.360doc.com/content/12/0318/16/532901_195392228.shtml一、介绍linux-2.6.32:Linux-2.6.32的网上介绍:增添了虚拟化内存de-duplicacion、重写了writeback代码、改进了Btrfs文件系统、添加了ATIR600/R7003D和KMS支持…

    2022年8月13日
    9
  • CSS半透明边框效果

    CSS半透明边框效果源代码:&lt;!doctypehtml&gt;&lt;html&gt;&lt;head&gt;&lt;metacharset="utf-8"&gt;&lt;style&gt;div{ width:500px; height:309px; border:50pxsolidhsla(0,0%,100%,0.5); background:url(file:///C:/Use…

    2022年7月13日
    12
  • asp.net cms_基于asp的开源项目

    asp.net cms_基于asp的开源项目随着网络技术的发展,目前国内CMS的开发商越来越多,各自都有其独特的优势,大家在选择的时候觉得眼花缭乱,不知道选择哪个比较好,我个人认为开源的CMS还是适合我们学习及研究使用,下边就几个国内的asp.net开源CMS进行简单介绍。1.We7CMS We7CMS是由西部动力开发的一款充分发掘互联网Web2.0(如博客、RSS等)的信息组织优势,将其理念利用到政府企事业网站的构建、组织

    2022年9月27日
    2
  • Deep Learning(深度学习)学习笔记整理系列之(五)

    Deep Learning(深度学习)学习笔记整理系列之(五)

    2021年11月15日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号