Android RxJava 2 的用法 just 、from、map、subscribe、flatmap、Flowable、Function、Consumer ...【转】
先简单说说RxJava的用途与价值
原文出处:Android RxJava 2 的用法
用途: 异步 (也就是开线程跳转)
价值: 面对复杂的逻辑,它依然 简洁 ,代码 易读
RxJava2 与 RxJava 最大的不一样的地方,就是 Flowable ,这个 Flowable 取代了Rxjava 中的
简单的使用:
下面展示一段代码:
Flowable
.fromArray(weeks)
.map(new Function<String, String>() {
@Override
public String apply(String s) throws Exception {
print("fromFlowable map s = " + s);
return "111";
}
})
.flatMap(new Function<String, Flowable<String>>() {
@Override
public Flowable<String> apply(String s) throws Exception {
print("fromFlowable flatMap s = " + s);
String[] strs = new String[]{"222", "333", "444"};
return Flowable.fromArray(strs);
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<String>() {
@Override
public void accept(String s) throws Exception {
print("fromFlowable subscribe s = " + s);
}
});
Flowable
.just("星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天")
.subscribe(new Consumer<String>() {
@Override
public void accept(String s) throws Exception {
print("jsutFlowable subscribe s = " + s);
}
});
这就是RxJava2 的最简单的使用了.
fromArray方法:
传入一个 数组 参数 .将参数注入到 Flowable 中 .
没了.仅仅传个数组进去而已.
just方法:
传入 若干个相同 的参数,将参数注入到 Flowable 中 .
没了.仅仅传入1个或者多个参数进去而已.
和 fromArray() 的作用的一样的. 传参数 !!!
map方法:
map()方法,也很好理解.
1. Flowable 传完参数之后
2. 接着调用 map()
3. map()的回调中,能直接拿到传进来的参数,并且需要返回一个返回值.待程序后续操作使用.
4. 参数可以随意操作转换, 参数 与 返回值 的 类型.由 Function 的泛型控制
5. Function 泛型的第一个是 传进来的参数 , 第二个是 返回值的类型
它的价值:
主要还是为了处理数据.处理完之后 发射 给下一级
flatMap方法:
flatMap() 与map() 的作用用法全部一样.
唯一的区别,就在于返回值类型.
flatMap 返回去的又是一个 Flowable
实际上是 Publisher ,因为 Flowable 是 Publisher 的 实现类 ,所以目前假装返回的是 Flowable 类型
它的价值:
个人认为,就是少写一个循环.因为往往用flatMap,返回去的Flowable , 都是用fromArray() 构造出来的对象.意义就是少写个for 循环.
subscribe方法:
subscribe()方法是传一个Consumer对象进去.这个对象官方的说法是 被观察者 . 个人理解为是一串 异步 操作之后,进行 回显UI 的一个操作.
在accept方法里面写回显UI的代码.
subscribeOn方法:
subscribeOn()传入的是一个 Scheduler 对象,这个对象用来指定. 一系列操作在哪个线程执行
一般传入子线程都可以.
observeOn方法:
observeOn() 传入的 也是一个 Scheduler对象,作用于subscribeOn一样,用来指定线程.
只不过,它们的区别是:
subscribeOn() 指定的是一系列操作在哪个线程执行
observeOn() 指定的是 subscribe 的回调 在哪个线程执行.
一般就是 subscribeOn() 子线程执行 observeOn() 主线程执行
外来资料简单展示:
1. Observable是数据的发射者,它会对外发射数据,然后经过map、flatmap**等等数据处理后,最终传递给**Observer,这个数据接收者。因此,抛开中间数据处理不管,可以看出,Observable对外发射数据,是数据流的开端;Observer接收数据,是数据流的末端。
Android RxJava 2 的用法 just 、from、map、subscribe、flatmap、Flowable、Function、Consumer ...【转】的更多相关文章
- 【Android】RxJava的使用(三)转换——map、flatMap
前两篇Android RxJava的使用(一)基本用法.Android RxJava的使用(二)Action介绍了RxJava的基本用法,对Rxjava还不了解的请先看以上两篇.这篇为大家讲解RxJa ...
- Android开发中Bundle用法包裹数据(转)
Android开发中Bundle用法包裹数据 Bundle的经典用法,包裹数据放入Intent中,目的在于传输数据. SDK 里是这样描述: A mapping from String values ...
- 【转】Android各种Adapter的用法
转自:http://my.oschina.net/u/658933/blog/372151 Android各种Adapter的用法 发表于5个月前(2015-01-27 10:56) 阅读(143 ...
- Android listview与adapter用法(BaseAdapter + getView)
Android listview与adapter用法http://www.cnblogs.com/zhengbeibei/archive/2013/05/14/3078805.html package ...
- android的logcat详细用法
Android日志系统提供了记录和查看系统调试信息的功能.日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过 logcat 命 令来查看和使用. 使用logcat命令 你可以用 logc ...
- 怎么通过activity里面的一个按钮跳转到另一个fragment(android FragmentTransaction.replace的用法介绍)
即:android FragmentTransaction.replace的用法介绍 Fragment的生命周期和它的宿主Activity密切相关,几乎和宿主Activity的生命周期一致,他们之间最 ...
- android application类的用法
android application类的用法 Application是android系统Framework提供的一个组件,它是单例模式(singleton),即每个应用只有一个实例,用来存储系统的一 ...
- android 中uri.parse()用法
android 中uri.parse()用法 1,调web浏览器 Uri myBlogUri = Uri.parse("http://xxxxx.com"); returnIt = ...
- Android webView 正确的用法
Android webView 正确的用法 引言: 我在网络找了几个例子,基本上都有问题,<Android疯狂讲义>13.4中的源代码也有问题.终于在官网找到正确的用法.点我. 基本用法: ...
随机推荐
- locals()和globals()
都是获取当前作用域的内容: locals() 获取局部作用域的所有内容 函数内:获取locals()之前的,当前作用阈所有内容 函数外:获取打印前, 当前的作用域所有内容 在闭包内: 会把使用到的外层 ...
- jQuery动态创建DOM节点
var SKU=$("#SKU"); // 通过ID查找到指定表格 var oTable=SKU[0]; // 获取第一个表格 // 获取正文tbody元素 var tBodies ...
- delphi2010 域名转换IP
uses winsock; function GetHostIp_wwwdelphitopcom(HostName: string): string; type tAddr = array[0.. ...
- 生成excel的时候要用双引号。。。。。
<?php header("Content-type:application/vnd.ms-excel"); header("Content-Disposition ...
- sqlserver默认的内存策略
sqlserver默认的内存策略,如果内存足够大,没有限制的话,会把一次搜索结果都放在内存中,下次搜索如果数据没发生变化(数据库缓存依赖策略),那么直接在内存数据中搜索,而不重新加载数据.可以通过每次 ...
- Solr——Windows下部署Solr6.6.0至Tomcat8.5.28(一)
一.window 环境 solr 6.6.3 下载地址 http://archive.apache.org/dist/lucene/solr/ jdk 1.8 tomcat 8.5 本机tomc ...
- org.springframework.boot.builder.SpringApplicationBuilder.<init>
新建了一个Spring cloud项目,启动时报错org.springframework.boot.builder.SpringApplicationBuilder.<init> 翻阅资料 ...
- QSetting 说明和简单使用
今天看到服务端代码有一个QSetting.一开始以为是STL模板中的Set(弄到QT中改了个名字而已).仔细一看吓一跳,不是STL模板.是qt特有的一个类. 用来保存或读取一些配置信息用的.看了后,感 ...
- android 开发 实现一个自定义布局的AlertDialog对话框
对话框有很多实现方法,最常见的是在一个点击事件中代码直接写出对话框.如下: package com.example.lenovo.mydemo2; import android.content.Dia ...
- elcipse 安装lombok插件解决 @Slf4j 等找不到log变量问题
参考:http://blog.51cto.com/4925054/2127840 <dependency> <groupId>org.projectlombok</gro ...