美文网首页
RxJava学习笔记2(操作符-创建)

RxJava学习笔记2(操作符-创建)

作者: 会飞的大象 | 来源:发表于2016-03-23 16:06 被阅读93次
    1. create
      create(OnSubscribe):创建一个Observable

      一个格式良好的Observable应该试图去调用onComplete()方法一次或者调用onError()方法一次
      注意:通过isUnsubscribed检查是一个良好的实践。当没有Observer时Observable可用避免发射数据或做昂贵的计算
      示例代码:
    Observable.create(new Observable.OnSubscribe<Integer>() {
        @Override
        public void call(Subscriber<? super Integer> observer) {
            try {
                if (!observer.isUnsubscribed()) {
                    for (int i = 1; i < 5; i++) {
                        observer.onNext(i);
                    }
                    observer.onCompleted();
                }
            } catch (Exception e) {
                observer.onError(e);
            }
        }
     } ).subscribe(new Subscriber<Integer>() {
            @Override
            public void onNext(Integer item) {
                System.out.println("Next: " + item);
            }
    
            @Override
            public void onError(Throwable error) {
                System.err.println("Error: " + error.getMessage());
            }
    
            @Override
            public void onCompleted() {
                System.out.println("Sequence complete.");
            }
        });
    
    1. defer
      defer():直到有observer订阅才创建Observable,并且为每个Observer创建最新的Observable。


    2. from
      from(array):将各种对象或数据类型转换成Observable
      from(Iterable)
      from(Future)
      from(Future,Scheduler)
      from(Future,timout,timeUnit)



      示例代码:

    Integer[] items = { 0, 1, 2, 3, 4, 5 };
    Observable myObservable = Observable.from(items);
    myObservable.subscribe(
        new Action1<Integer>() {
            @Override
            public void call(Integer item) {
                System.out.println(item);
            }
        },
        new Action1<Throwable>() {
            @Override
            public void call(Throwable error) {
                System.out.println("Error encountered: " + error.getMessage());
            }
        },
        new Action0() {
            @Override
            public void call() {
                System.out.println("Sequence complete");
            }
        }
    );
    

    运行结果:


    1. Interval
    • interval(long,TimeUnit)
      interval(long,TimeUnit,Scheduler)
      每隔一个时间段发射一个增长的整数


    • interval(long,long,TimeUnit)
      interval(long,long,TimeUnit,Scheduler)
      第一个参数指定的时间发射一个0,然后按第二个参数指定的时间每隔一个时间段发射一个增长的整数


    1. just
      just(item)
      类似from,但是会将源数据做为一个整体发射出去


      注意:如果传入nulljust,它会发射一个null出去
    2. range
      range(int,int)
      range(int,int,Scheduler)
      range(n,m)会发射从n开始的m个元素


      注意:如果n为0,则不会发射任何值;如果n<0,则会抛异常
    3. repeat

    • repeat()
      repeat(long)
      repeat(Scheduler)
      repeat(long,Scheduler)
      不会初始化一个Observable,而是会对一个Observable重复发射


    • repeatWhen(Func1)
      repeatWhen(Func1,Scheduler)


    1. Start
      发射一个函数返回的值


    2. Timer
      timer(long,TimeUnit)
      timer(long,TimeUnit,Scheduler)
      在延迟指定的一段时间后发射一个0


    相关文章

      网友评论

          本文标题:RxJava学习笔记2(操作符-创建)

          本文链接:https://www.haomeiwen.com/subject/efgllttx.html