Rxjava用法
来源:互联网 发布:淘宝宝贝被同行举报 编辑:程序博客网 时间:2024/05/29 09:12
1、RxJava基本概念:
Observable(可观察者,被观察者)、Observer(Subscriber)(观察者)、subscribe(订阅)。Observable和Observer通过subscribe相关联。
2、创建Observer(subscriber)即观察者
Observer<String> observer = new Observer<String>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(String s) { } }; Subscriber<String> subscriber = new Subscriber<String>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(String s) { } };
3、创建(Observable)被观察者:
(1)使用create方法创建:
Observable<String> observable = Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> subscriber) { subscriber.onNext("Hello RxJava"); subscriber.onCompleted(); } });
(2)使用just(T….)方法将参数依次发送出来:
Observable<String> observable1 = Observable.just("hello","rxjava");
(3) 使用from(T[]),from(Iterable
String[] strs = {"Hello","Rxjava"}; Observable<String> observable2 = Observable.from(strs);
4、订阅
observable.subscribe(subscriber);
Observable可以只订阅onNext,onError,onComplete事件
Action1<String> onNext = new Action1<String>() { @Override public void call(String s) { } }; Action1<Throwable> onError = new Action1<Throwable>() { @Override public void call(Throwable throwable) { } }; Action0 onComplete = new Action0() { @Override public void call() { } }; observable.subscribe(onNext); observable.subscribe(onNext,onError); observable.subscribe(onNext,onError,onComplete);
5、线程控制:
Schedulers.immediate(): 直接在当前线程运行,相当于不指定线程。这是默认的 Scheduler。
Schedulers.newThread(): 总是启用新线程,并在新线程执行操作。
Schedulers.io(): I/O 操作(读写文件、读写数据库、网络信息交互等)所使用的 Scheduler。
Schedulers.computation(): 计算所使用的 Scheduler。
Android 还有一个专用的 AndroidSchedulers.mainThread(),它指定的操作将在 Android 主线程运行。
举个栗子:
Observable.just(1,2,3) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { Log.d("num",integer.toString()); } });
0 0
- Rxjava用法
- Rxjava基本用法
- Rxjava基本用法总结
- RxJava的基本用法
- RxJava基本用法
- Android rxjava用法浅析
- rxjava 常用用法实例
- rxjava第一篇 rxjava基本用法
- Retrofit2与RxJava用法大全
- 关于RxJava简单用法(一)
- 关于RxJava简单用法(二)
- Retrofit 结合rxjava框架用法
- Android Rxjava的create的基本用法
- 关于RxJava的简单用法(三)
- 关于RxJava的简单用法(四)
- RxJava用法详解持续更新中......
- Android网络编程Retrofit+Rxjava用法详解
- RxJava flatMap操作符用法详解
- LINUX下GDB调试
- MRF 马尔科夫随机场
- java程序员无javascript,基础入门vuejs中遇到问题和解决
- ES6代码规范(整理)
- 重载、覆盖、隐藏的区别
- Rxjava用法
- 安装cocoapods及使用详解
- 架构设计:系统间通信(14)——RPC实例Apache Thrift 下篇(2)
- NC对话框
- 理解 R summary
- 静态内部类和非静态内部类的区别
- 解决perl: warning: Setting locale failed. perl: warning: Please check that your locale settings:
- 【奇葩问题-1】error 997:重叠I/O正在进行中(mircosoft vc++ 2008 Redisturbute x64 )
- 鸟哥的Linux私房菜学习笔记--重要的几个热键