Android RxJava的基本使用二
来源:互联网 发布:牛彩纽约源码 编辑:程序博客网 时间:2024/05/16 01:53
Action
Action是RxJava的一个接口,常用的有Action1和Action0
Action0: 它只有一个方法 call(),这个方法是无参无返回值的;由于 onCompleted() 方法也是无参无返回值的,因此 Action0 可以被当成一个包装对象,将 onCompleted() 的内容打包起来将自己作为一个参数传入 subscribe() 以实现不完整定义的回调。
Ation1:它同样只有一个方法 call(T param),这个方法也无返回值,但有一个参数;与 Action0 同理,由于 onNext(T obj) 和 onError(Throwable error) 也是单参数无返回值的,因此 Action1 可以将 onNext(obj)和 onError(error) 打包起来传入 subscribe() 以实现不完整定义的回调
Subscriber的写法是这样的
Observable.just("Hello", "World"). subscribe(new Subscriber<String>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(String s) { Logger.d(s); } });
用到的只有 onNext(String s),方法比较多但是有很多不需要,代码也就多了不够简洁,使用Action使代码更简洁更清晰
Observable.just("哈哈哈哈", "发发发发付").subscribe(new Action1<String>() { @Override public void call(String s) { Logger.d(s); } });
Action的使用
定义三个对象
Action1<String> onNextAction=new Action1<String>() { @Override public void call(String s) { Logger.d(s); } }; Action1<Throwable> onError=new Action1<Throwable>() { @Override public void call(Throwable throwable) { Logger.d(throwable.getMessage()); } };
Action0 onCompleted=new Action0() { @Override public void call() { Logger.d("onCompleted"); } };
根据需要往subscribe()中放入不同的对象
Observable.just("aaaa", "bbbb").subscribe(onNextAction);
Observable.just("eeee", "ggggg").subscribe(onNextAction,onError);
Observable.just("cccc", "dddd").subscribe(onNextAction,onError,onCompleted);
现在有个疑问,为什么使用Action也能达到使用Subscriber的结果?进subscribe(Action1 onNext)的源码看看。
public final Subscription subscribe(final Action1<? super T> onNext) { if (onNext == null) { throw new IllegalArgumentException("onNext can not be null"); } Action1<Throwable> onError = InternalObservableUtils.ERROR_NOT_IMPLEMENTED; Action0 onCompleted = Actions.empty(); return subscribe(new ActionSubscriber<T>(onNext, onError, onCompleted)); }
其实是把Action对象转化为相应的Subscriber对象了
阅读全文
0 0
- Android RxJava的基本使用二
- [Android]_[RxJava的基本使用]
- Android RxJava的基本使用一
- Android RxJava的基本使用三
- Android RxJava的基本使用四
- android中RXJava的基本使用
- Android RxJava使用介绍(二) RxJava的操作符
- Android RxJava使用介绍(二) RxJava的操作符
- Android RxJava使用介绍(二) RxJava的操作符
- Android RxJava使用介绍(二) RxJava的操作符
- [Android]RxJava的简单介绍和基本使用(二):retrofit2的简单介绍
- Android RxJava的使用(二)Action
- 【Android】RxJava的使用(二)Action
- 【Android】RxJava的使用(二)Action
- RxJava的基本使用
- RxJava的基本使用
- RxJava的基本使用
- RxJava的基本使用
- Ubuntu 安装 Nginx
- 第三周 项目3-求集合并集
- 加载一个类时,其内部类是否同时被加载?静态内部类单例模式
- 大型网站系统架构演化之路
- 安卓逆向(一)
- Android RxJava的基本使用二
- 第3周【项目2
- ORA-12170
- JAVA java继承
- C/C++ 语言中简单体验复杂度(1)
- SQL UNION 和 UNION ALL 操作符
- Swift 可选链
- Java设计模式之——单例模式
- Mysql的编译安装