当前位置: 代码迷 >> 综合 >> RxJava3 创建操作符整理
  详细解决方案

RxJava3 创建操作符整理

热度:77   发布时间:2024-02-02 03:05:07.0

最近这三四个项目中都用到了RxJava,使用频率之高,觉着有必要进行整理,方便自己巩固记忆,也便于他人学习查找;

本文就RxJava3的创建操作符进行记录,整理如下图:

 RxJava 使用步骤 :

数据源产生数据并发射给订阅了这个数据的观察者(响应式编程)。

所以主要分为三步:

第一步:创建被观察者(数据源)并生产数据

第二步:创建观察者 

第三步:订阅(关系绑定)

1、create


 

点击一个按钮时,建立订阅关系

输出如下:

2、just

点击一个按钮时,建立订阅关系

输出如下:

3、formArray

点击一个按钮时,建立订阅关系

输出如下:

4、formIterable

点击一个按钮时,建立订阅关系

输出如下:

5、defer

举了这么几个简单的例子,我把剩下的代码都复制在下面吧:

 

 

public class MainActivity extends AppCompatActivity {private List<Integer> list = new ArrayList<>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);list.add(1);list.add(2);list.add(3);list.add(4);list.add(5);list.add(6);list.add(7);list.add(8);list.add(9);list.add(10);list.add(11);}public void testOnClick(View view) {//3、订阅,此时触发1步中subscribe方法的执行observableByFromWithLambda.subscribe(observer);}//创建操作符  range,rangeLong//连续发送一个序列,可指定范围//序列可为Long类型
//    Observable<Long> observableByFromWithLambda = Observable.rangeLong(1,20);/*** start:  开始数值* count: 输出值的个数* initialDelay: 延迟多少秒执行* period: 间隔多久执行一次* TimeUnit:  单位设置,NANOSECONDS(纳秒),MICROSECONDS(微秒),MILLISECONDS(毫秒),SECONDS(秒),MINUTES(分钟),HOURS(小时),DAYS(天)*///创建操作符intervalRange,每隔指定时间发送指定数量// Observable<Long> observableByFromWithLambda = Observable.intervalRange(0,12,2,2,TimeUnit.SECONDS);//创建操作符interval,每隔指定时间发送
//    Observable<Long> observableByFromWithLambda = Observable.interval(3,TimeUnit.SECONDS);//创建操作符timer,延迟指定时间后发送
//    Observable<Long> observableByFromWithLambda = Observable.timer(3, TimeUnit.SECONDS);//创建操作符 defer,直到被订阅后才发送Observable<Integer> observableByFromWithLambda = Observable.defer(() -> Observable.just(5));//创建操作符 error ,仅发送Error事件
//    Observable<Integer> observableByFromWithLambda = Observable.error(new Throwable());//创建操作符 empty,仅发送仅发送Complete事件
//    Observable<Integer> observableByFromWithLambda = Observable.empty();//创建操作符 never,不发送任何事件
//    Observable<Integer> observableByFromWithLambda = Observable.never();//1、创建操作符fromIterable,发送传入的list数据
//    Observable<Integer> observableByFromWithLambda = Observable.fromIterable(list);//1、创建操作符formArray(),发送传入的数组数据
//    Integer[] items = {0, 1, 2, 3, 4};
//    Observable<Integer> observableByFromWithLambda = Observable.fromArray(items);//1、创建操作符 just()使用(直接发送传入的值)
//    Observable<Integer> observableByFromWithLambda = Observable.just(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);//1、创建被观察者(create使用,   最基本的创建方式)
//    Observable<Integer> observableByFromWithLambda = Observable.create((emitter -> {
//        emitter.onNext(1);
//        emitter.onNext(2);
//        emitter.onNext(3);
//        emitter.onNext(4);
//        emitter.onComplete();
//    }));//2.创建观察者/订阅者Observer<Integer> observer = new Observer<Integer>() {@Overridepublic void onSubscribe(Disposable d) {Log.d("MainActivity", "订阅时被调用");}@Overridepublic void onNext(Integer o) {Log.d("MainActivity", "发送数据时被多次调用" + String.valueOf(o));}@Overridepublic void onError(Throwable e) {Log.d("MainActivity", "出错时被调用" + e.toString());}@Overridepublic void onComplete() {Log.d("MainActivity", "完成时被调用");}};//    Observer<Long> observer = new Observer<Long>() {
//
//
//        @Override
//        public void onSubscribe(@NonNull Disposable d) {
//            Log.d("MainActivity", "onSubscribe(Disposable d) called!");
//        }
//
//        @Override
//        public void onNext(@NonNull Long aLong) {
//            Log.d("MainActivity", "nNext(Integer o) called!" + aLong);
//        }
//
//        @Override
//        public void onError(@NonNull Throwable e) {
//            Log.d("MainActivity", "onError(Throwable e) called!" + e.toString());
//        }
//
//        @Override
//        public void onComplete() {
//            Log.d("MainActivity", "onComplete called!");
//        }
//    };}

后续,我再整理别的操作符;今天就这样;