Rxjava笔记

Rxjava的创建

1.创建操作 create

创建操作 observable

      Observable observable = Observable.create(new   Observable.OnSubscribe() {
            @Override
            public void call(Subscriber subscriber) {
                  if (!subscriber.isUnsubscribed()) {
                    subscriber.onNext("aaaaa");
                    subscriber.onNext(onDownLoad());
                    subscriber.onNext("bbbbb");
                    subscriber.onNext("ccccc");
                }            
        });

创建操作 subscriber

  Subscriber subscriber = new Subscriber() {
            @Override
            public void onCompleted() {
                Log.i(TAG, "onCompleted");
            }

            @Override
            public void onError(Throwable e) {
                Log.i(TAG, "onError");
            }

            @Override
            public void onNext(String s) {
                Log.i(TAG, s.toString());
            }
        };```
观察者订阅被观察者

observable.subscribe(subscriber);


简写

Observable.create(new Observable.OnSubscribe() {
@Override
public void call(Subscriber subscriber) {
if (!subscriber.isUnsubscribed()) {
for (int i = 0; i < 10; i++) {
subscriber.onNext(i);
}
subscriber.onCompleted();
}
}
}).subscribe(new Subscriber() {
@Override
public void onCompleted() {
Log.i(TAG, "onCompleted");
}

        @Override
        public void onError(Throwable e) {
            Log.i(TAG, e.getMessage());
        }

        @Override
        public void onNext(Integer integer) {
            Log.i(TAG, "result-->>" + integer);
        }
    });

//我们其实并不关心OnComplete和OnError,我们只需要在onNext的时候做一些处理,这时候就可以使用Action1类。
Observable.just("Hello, world!")
.subscribe(new Action1() {
@Override
public void call(String s) {
System.out.println(s);
}
});

###2.创建from操作 
将其他的类对象和数据类型转换为Observable,例如 iterable可以看成是同步的
Observable。通过显式将那些数据转化为Observables,你可以像使用Observable一样与他们交互

Observable observable = Observable.from(items);
observable.subscribe(new Action1() {
@Override
public void call(Integer integer) {

        }
    }, new Action1() {
        @Override
        public void call(Throwable throwable) {

        }
    }, new Action0() {
        @Override
        public void call() {
            
        }
    });

###3.创建interval操作 
创建一个按固定时间间隔发射的Observable

Observable.interval(5, 10, TimeUnit.SECONDS).subscribe(new Action1() {
@Override
public void call(Long aLong) {
Log.i(TAG, aLong.toString());
}
});

initialDelay 5 : 延迟5S
period  10: 每隔10S

###4.创建just操作 
Just将单个的数据转化为要发射的那个数据Observable,just类似from,但是from会将数组或iterable当单个数据

Observable.just(new Integer[]{1, 2, 3, 4, 5, 6}, new Integer[]{3, 5, 6, 8, 3, 8}).subscribe(new Action1() {
@Override
public void call(Integer[] integers) {
for (int i = 0; i < integers.length; i++) {
Log.i(TAG, "next:" + integers[i]);
}
}
});

Log 123456 356838

##Rxjava的变换操作
###1.变换map操作 
就是用来把把一个事件转换为另一个事件的。

Observable.just("Hello, world!")
.map(new Func1() {
@Override
public String call(String s) {
return s + " -Dan";
}
})
.subscribe(s -> System.out.println(s));

比如上面的例子中,subscriber并不关心返回的字符串,而是想要字符串的hash值

Observable.just("Hello, world!")
.map(new Func1() {
@Override
public Integer call(String s) {
return s.hashCode();
}
})
.subscribe(i -> System.out.println(Integer.toString(i)));

你可能感兴趣的:(Rxjava笔记)