RxJava中ActionX与FuncX的区别
来源:互联网 发布:知行书院培训学校 编辑:程序博客网 时间:2024/06/06 07:08
ActionX用在.subscribe()中的,传入的个数和位置决定用处。ActionX的返回值都为void
自动创建 Subscriber ,并使用 onNextAction 来定义 onNext()
Action1<String> onNextAction = new Action1<String>() { // onNext() @Override public void call(String s) { Log.d(tag, s); }};observable.subscribe(onNextAction);//只会执行onNext
自动创建 Subscriber ,并使用 onNextAction 和 onErrorAction 来定义 onNext() 和 onError()
Action1<Throwable> onErrorAction = new Action1<Throwable>() { // onError() @Override public void call(Throwable throwable) { // Error handling }};observable.subscribe(onNextAction, onErrorAction);//执行onNext和onError方法
自动创建 Subscriber ,并使用 onNextAction、 onErrorAction 和 onCompletedAction 来定义 onNext()、 onError() 和 onCompleted()
Action0 onCompletedAction = new Action0() { // onCompleted() @Override public void call() { Log.d(tag, "completed"); }};observable.subscribe(onNextAction, onErrorAction, onCompletedAction);//执行onNext、onError、onCompleted三个方法
Action1 和 Action0。 Action0 是 RxJava 的一个接口,它只有一个方法 call(),这个方法是无参无返回值的;由于 onCompleted() 方法也是无参无返回值的,因此 Action0 可以被当成一个包装对象,将 onCompleted() 的内容打包起来将自己作为一个参数传入 subscribe() 以实现不完整定义的回调。这样其实也可以看做将 onCompleted() 方法作为参数传进了subscribe(),相当于其他某些语言中的『闭包』。 Action1 也是一个接口,它同样只有一个方法 call(T param),这个方法也无返回值,但有一个参数;与 Action0 同理,由于 onNext(T obj) 和 onError(Throwable error) 也是单参数无返回值的,因此 Action1可以将 onNext(obj) 和 onError(error) 打包起来传入 subscribe() 以实现不完整定义的回调。事实上,虽然 Action0 和 Action1在 API 中使用最广泛,但 RxJava 是提供了多个 ActionX 形式的接口 (例如 Action2, Action3) 的,它们可以被用以包装不同的无返回值的方法。
FuncX常用在map、flatMap中,将传过来的数值类型转化为另一种数值类型,“FuncX”中的“X”代表着多少个参数
Func1<Integer, String> stringFunc1 = new Func1<Integer, String>() { @Override public String call(Integer integer) { return "haha--"+integer; }};Observable<String> stringObservable = Observable.just(1, 2, 3, 4, 5).map(stringFunc1);stringObservable.subscribe(new Action1<String>() { @Override public void call(String s) { Log.d("RxJavaDemo",s); }});
Func1 的类。它和 Action1 非常相似,也是 RxJava 的一个接口,用于包装含有一个参数的方法。 Func1 和Action 的区别在于, Func1 包装的是有返回值的方法。另外,和 ActionX 一样, FuncX 也有多个,用于不同参数个数的方法。FuncX和 ActionX 的区别在 FuncX 包装的是有返回值的方法。
- RxJava中ActionX与FuncX的区别
- rxjava scan 与reduce区别
- 与rxJava的偶遇
- Rxjava的介绍与使用
- RxJava与Retrofit的封装
- 与RxJava的第一次接触
- rxjava与sqlite的结合
- Retrofit2与RxJava的使用
- retorfit与Rxjava的权限
- MVP中RxJava的使用
- RXJava observeOn和subscribeOn的区别
- JSP中与的区别
- CSS中#与.的区别
- ibatis中$与#的区别
- Struts2中$, #与%的区别
- java中&与&&的区别
- C#中&与&&的区别
- java中&与&&的区别
- 第三方支付平台:BeeCloud和Ping++对比
- 图像处理--linux opencv2多线程人脸识别
- JavaScript代码-创建交互网页
- csdn如何转载别人的文章
- Quartz2d 的Path路径
- RxJava中ActionX与FuncX的区别
- MessageDigest详解(Java自带加密)
- ECSHOP滚动或点击加载更多订单(瀑布流)JQuery.more.js
- java序列化
- Matlab 最小外接矩形
- 升级正版win10遇到的琐碎事(MBR分区表GPT分区表)
- 二叉树(补充)
- 57-001-1 bootstrap实现图片轮播效果
- Weblogic/Tomcat服务器(过滤)禁止访问指定后缀名文件