Create
——使用一個函數(shù)從頭開始創(chuàng)建一個Observable

代碼:
Observable.create(new Observable.OnSubscribe<String>() {
@Override
public void call(Subscriber<? super String> subscriber) {
if (!subscriber.isUnsubscribed()) {//判斷觀察者的狀態(tài),如果沒有訂閱則不發(fā)送數(shù)據(jù)
subscriber.onNext("created 操作符1");
subscriber.onNext("created 操作符2");
subscriber.onNext("created 操作符3");
subscriber.onNext("created 操作符4");
subscriber.onCompleted();
}
}
}).subscribe(new Subscriber<String>() {
@Override
public void onCompleted() {
Log.d(TAG, "onCompleted");
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "onError:" + e.toString());
}
@Override
public void onNext(String s) {
Log.d(TAG, s);
}
});
輸出結(jié)果:
03-17 23:46:43.137 12009-12009/com.io.github.hjianfei.demo D/onResponse: created 操作符1
03-17 23:46:43.137 12009-12009/com.io.github.hjianfei.demo D/onResponse: created 操作符2
03-17 23:46:43.137 12009-12009/com.io.github.hjianfei.demo D/onResponse: created 操作符3
03-17 23:46:43.137 12009-12009/com.io.github.hjianfei.demo D/onResponse: created 操作符4
03-17 23:46:43.137 12009-12009/com.io.github.hjianfei.demo D/onResponse: onCompleted
From
——將其它種類的對象和數(shù)據(jù)類型轉(zhuǎn)換為Observable

代碼:
String from[] = {"From操作符1", "From操作符2", "From操作符3", "From操作符4"};
Observable.from(from)
.subscribe(new Subscriber<String>() {
@Override
public void onCompleted() {
Log.d(TAG, "onCompleted");
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "onError:" + e.toString());
}
@Override
public void onNext(String s) {
Log.d(TAG, s);
}
});
結(jié)果:
03-18 00:02:39.591 28131-28131/com.io.github.hjianfei.demo D/onResponse: From操作符1
03-18 00:02:39.591 28131-28131/com.io.github.hjianfei.demo D/onResponse: From操作符2
03-18 00:02:39.591 28131-28131/com.io.github.hjianfei.demo D/onResponse: From操作符3
03-18 00:02:39.591 28131-28131/com.io.github.hjianfei.demo D/onResponse: From操作符4
03-18 00:02:39.591 28131-28131/com.io.github.hjianfei.demo D/onResponse: onCompleted
Interval
——創(chuàng)建一個按固定時間間隔發(fā)射整數(shù)序列的Observable

Interval操作符返回一個Observable,它按固定的時間間隔發(fā)射一個無限遞增的整數(shù)序列。它接受一個表示時間間隔的參數(shù)和一個表示時間單位的參數(shù)。
interval(long,TimeUnit))
interval(long,TimeUnit,Scheduler))
代碼:
Observable.interval(5, TimeUnit.SECONDS)
.subscribe(new Subscriber<Long>() {
@Override
public void onCompleted() {
Log.d(TAG, "onCompleted");
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "onError:" + e.toString());
}
@Override
public void onNext(Long aLong) {
Log.d(TAG, aLong+"");
}
});
結(jié)果:
03-18 00:08:58.024 6346-6651/com.io.github.hjianfei.demo D/onResponse: 0
03-18 00:09:03.023 6346-6651/com.io.github.hjianfei.demo D/onResponse: 1
03-18 00:09:08.024 6346-6651/com.io.github.hjianfei.demo D/onResponse: 2
03-18 00:09:13.024 6346-6651/com.io.github.hjianfei.demo D/onResponse: 3
03-18 00:09:18.024 6346-6651/com.io.github.hjianfei.demo D/onResponse: 4
03-18 00:09:23.025 6346-6651/com.io.github.hjianfei.demo D/onResponse: 5
......
......
Just
——創(chuàng)建一個發(fā)射指定值的Observable
Just將單個數(shù)據(jù)轉(zhuǎn)換為發(fā)射那個數(shù)據(jù)的Observable。
Just類似于From,但是From會將數(shù)組或Iterable的數(shù)據(jù)取出然后逐個發(fā)射,而Just只是簡單的原樣發(fā)射,將數(shù)組或Iterable當做單個數(shù)據(jù)。

代碼:
Observable.just("Just操作符1", "Just操作符2", "Just操作符3", "Just操作符4")
.subscribe(new Subscriber<String>() {
@Override
public void onCompleted() {
Log.d(TAG, "onCompleted");
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "onError:" + e.toString());
}
@Override
public void onNext(String just) {
Log.d(TAG, just);
}
});
結(jié)果:
03-18 00:16:30.458 16301-16301/com.io.github.hjianfei.demo D/onResponse: Just操作符1
03-18 00:16:30.458 16301-16301/com.io.github.hjianfei.demo D/onResponse: Just操作符2
03-18 00:16:30.458 16301-16301/com.io.github.hjianfei.demo D/onResponse: Just操作符3
03-18 00:16:30.458 16301-16301/com.io.github.hjianfei.demo D/onResponse: Just操作符4
03-18 00:16:30.458 16301-16301/com.io.github.hjianfei.demo D/onResponse: onCompleted
Range
——創(chuàng)建一個發(fā)射特定整數(shù)序列的Observable
Range操作符發(fā)射一個范圍內(nèi)的有序整數(shù)序列,你可以指定范圍的起始和長度。
RxJava將這個操作符實現(xiàn)為range函數(shù),它接受兩個參數(shù),一個是范圍的起始值,一個是范圍的數(shù)據(jù)的數(shù)目。如果你將第二個參數(shù)設為0,將導致Observable不發(fā)射任何數(shù)據(jù)(如果設置為負數(shù),會拋異常)。

代碼:
Observable.range(1, 5)
.subscribe(new Subscriber<Integer>() {
@Override
public void onCompleted() {
Log.d(TAG, "onCompleted");
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "onError:" + e.toString());
}
@Override
public void onNext(Integer integer) {
Log.d(TAG, integer + "");
}
});
結(jié)果:
03-18 00:19:55.669 22020-22020/com.io.github.hjianfei.demo D/onResponse: 1
03-18 00:19:55.669 22020-22020/com.io.github.hjianfei.demo D/onResponse: 2
03-18 00:19:55.669 22020-22020/com.io.github.hjianfei.demo D/onResponse: 3
03-18 00:19:55.669 22020-22020/com.io.github.hjianfei.demo D/onResponse: 4
03-18 00:19:55.669 22020-22020/com.io.github.hjianfei.demo D/onResponse: 5
03-18 00:19:55.669 22020-22020/com.io.github.hjianfei.demo D/onResponse: onCompleted
Repeat
——創(chuàng)建一個發(fā)射特定數(shù)據(jù)重復多次的Observable
Repeat重復地發(fā)射數(shù)據(jù)。某些實現(xiàn)允許你重復的發(fā)射某個數(shù)據(jù)序列,還有一些允許你限制重復的次數(shù)。
RxJava將這個操作符實現(xiàn)為repeat方法。它不是創(chuàng)建一個Observable,而是重復發(fā)射原始Observable的數(shù)據(jù)序列,這個序列或者是無限的,或者通過repeat(n)指定重復次數(shù)。

代碼:
Observable.just("Repeat操作符1", "Repeat操作符2", "Repeat操作符3")
.repeat(2)
.subscribe(new Subscriber<String>() {
@Override
public void onCompleted() {
Log.d(TAG, "onCompleted");
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "onError:" + e.toString());
}
@Override
public void onNext(String just) {
Log.d(TAG, just);
}
});
結(jié)果:
03-18 00:24:50.660 28474-28474/com.io.github.hjianfei.demo D/onResponse: Repeat操作符1
03-18 00:24:50.661 28474-28474/com.io.github.hjianfei.demo D/onResponse: Repeat操作符2
03-18 00:24:50.661 28474-28474/com.io.github.hjianfei.demo D/onResponse: Repeat操作符3
03-18 00:24:50.665 28474-28474/com.io.github.hjianfei.demo D/onResponse: Repeat操作符1
03-18 00:24:50.665 28474-28474/com.io.github.hjianfei.demo D/onResponse: Repeat操作符2
03-18 00:24:50.665 28474-28474/com.io.github.hjianfei.demo D/onResponse: Repeat操作符3
03-18 00:24:50.665 28474-28474/com.io.github.hjianfei.demo D/onResponse: onCompleted
Timer
——創(chuàng)建一個Observable,它在一個給定的延遲后發(fā)射一個特殊的值。
Timer操作符創(chuàng)建一個在給定的時間段之后返回一個特殊值的Observable。
RxJava將這個操作符實現(xiàn)為timer函數(shù)。
timer返回一個Observable,它在延遲一段給定的時間后發(fā)射一個簡單的數(shù)字0。

代碼:
Observable.timer(2, java.util.concurrent.TimeUnit.SECONDS)
.subscribe(new Subscriber<Long>() {
@Override
public void onCompleted() {
Log.d(TAG, "onCompleted");
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "onError:" + e.toString());
}
@Override
public void onNext(Long aLong) {
Log.d(TAG, aLong + "");
}
});
結(jié)果:
03-18 00:29:42.656 3065-3533/com.io.github.hjianfei.demo D/onResponse: 0
03-18 00:29:42.656 3065-3533/com.io.github.hjianfei.demo D/onResponse: onCompleted
還有更多的操作符請查看 RXJava官方文檔