这篇文章主要介绍了rxjava 2.x新特性的相关资料,文中通过图文及示例代码介绍的非常详细,对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
什么是rxjava
rx是异步响应式编程的意思,本质是观察者模式,以观察者和订阅者的异步响应式编程。
本文主要介绍了关于rxjava 2.x新特性的相关资料,下面话不多说,来看看详细的介绍吧。
背压的分离
flowable/subscriber
flowable.range(0,10)
.subscribe(new subscriber<integer>() {
subscription sub;
//当订阅后,会首先调用这个方法,其实就相当于onstart(),
//传入的subscription s参数可以用于请求数据或者取消订阅
@override
public void onsubscribe(subscription s) {
log.w("tag","onsubscribe start");
sub=s;
sub.request(1);
log.w("tag","onsubscribe end");
}
@override
public void onnext(integer o) {
log.w("tag","onnext--->"+o);
sub.request(1);
}
@override
public void onerror(throwable t) {
t.printstacktrace();
}
@override
public void oncomplete() {
log.w("tag","oncomplete");
}
});
输出:
onsubscribe start
onnext--->0
onnext--->1
onnext--->2
...
onnext--->10
oncomplete
onsubscribe end
根据上面的代码的结果输出中可以看到,当我们调用subscription.request(n)方法的时候,不等onsubscribe()中后面的代码执行,就会立刻执行到onnext方法,因此,如果你在onnext方法中使用到需要初始化的类时,应当尽量在subscription.request(n)这个方法调用之前做好初始化的工作;
另外一种创建方法
flowable.create(new flowableonsubscribe<integer>() {
@override
public void subscribe(flowableemitter<integer> e) throws exception {
e.onnext(1);
e.onnext(2);
e.onnext(3);
e.onnext(4);
e.oncomplete();
}
}
//需要指定背压策略
, backpressurestrategy.buffer);
其他观察者模式
single/singleobserver
completable/completableobserver
maybe/maybeobserver
以上三种类似, 比较适合发送单个数据, 并不适合发送大量数据.
//判断是否登陆
maybe.just(islogin())
//可能涉及到io操作,放在子线程
.subscribeon(schedulers.newthread())
//取回结果传到主线程
.observeon(androidschedulers.mainthread())
.subscribe(new maybeobserver<boolean>() {
@override
public void onsubscribe(disposable d) {
}
@override
public void onsuccess(boolean value) {
if(value){
...
}else{
...
}
}
@override
public void onerror(throwable e) {
}
@override
public void oncomplete() {
}
});
实际上,这种观察者模式并不用于发送大量数据,而是发送单个数据,也就是说,当你只想要某个事件的结果(true or false)的时候,你可以用这种观察者模式
action
rx1.0———–rx2.0
action1——–action
action1——–consumer
action2——–biconsumer
后面的action都去掉了,只保留了actionn
参考
总结
以上就是rxjava 2.x新特性总结整理的图文介绍的详细内容。