首页 > 编程 > Java > 正文

Rxjava用法

2019-11-09 15:08:05
字体:
来源:转载
供稿:网友

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()); } });
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表