1、create操作符
使用Create操作符從頭開始創建一個Observable,給這個操作符傳遞一個接受觀察者作爲參數的函數,我們需要實現call方法發射一些數據,並恰當的調用觀察者的onNext,onError和onCompleted方法。
create方法默認不在任何特定的調度器上執行。
create操作符是所有創建型操作符的“根”,也就是說其他創建型操作符最後都是通過create操作符來創建Observable的
Observable.create(new Observable.OnSubscribe<Integer>() {
@Override public void call(Subscriber<? super Integer> subscriber) {
for (int i = 0; i < 5; i++) {
subscriber.onNext(i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).subscribe(new Action1<Integer>() {
@Override public void call(Integer integer) {
Log.d("TAG",String.valueOf(integer));
}
});
2、from操作符
(1)定義:將其它種類的對象和數據類型轉換爲Observable
(2)特點:將某個對象轉換爲Observable對象,
然後依次的從對象(可能是Array或Iterable對象)中拿取數據,一個一個的發送。
(3)數據格式如下5種形式:
from(array)
from(Iterable)
from(Future)
from(Future,Scheduler)
from(Future,timeout, timeUnit)
代碼示例:
public void from(){
String str[]={"one","two","three","four"};
Observable.from(str).subscribe(new Subscriber<String>() {
@Override public void onCompleted() {
Log.d("TAG","發送完成");
}
@Override public void onError(Throwable e) {
}
@Override public void onNext(String s) {
Log.d("TAG",s);
}
});
}
3、just操作符
(1)定義:Just將單個數據轉換爲發射那個數據的Observable,創建一個發射指定值的Observable
(2)介紹:
Just將單個數據轉換爲發射那個數據的Observable,創建一個發射指定值的Observable。
Just類似於From,但是From會將數組或Iterable的素具取出然後逐個發射,而Just只是簡單的原樣發射,
將數組或Iterable當做單個數據。
如果需要空Observable你應該使用Empty操作RxJava將這個操作符實現爲just函數,它接受一至十個參數,
返回一個按參數列表順序發射這些數據的Observable。
如果看它的源碼的話,你會發現其實它是對from的封裝,他調用的還是from。
源碼:
public static <T> Observable<T> just(T t1, T t2) {
return from((T[])new Object[] { t1, t2 });
}
代碼示例:
Observable.just("one","two","three","four").subscribe(new Subscriber<String>() {
@Override public void onCompleted() {
Log.d("TAG","發送完成");
}
@Override public void onError(Throwable e) {
}
@Override public void onNext(String s) {
Log.d("TAG",s);
}
});
List<String> list = new ArrayList<>();
list.add("one");
list.add("two");
list.add("three");
list.add("four");
Observable.just(list).subscribe(new Subscriber<List<String>>() {
@Override public void onCompleted() {
Log.d("TAG","發送完成");
}
@Override public void onError(Throwable e) {
}
@Override public void onNext(List<String> list) {
Log.d("TAG",list.toString());
}
});
4、range操作符
(1)range操作符發射一個範圍內的有序整數序列,你可以指定範圍的起始和長度。
(2)range有兩個參數,第一參數是起始的位置,第二個參數是要輸出的個數,
兩個參數都是整型數據。一般可以結合Iterable對象和數組使用。
代碼示例:
final List<String> list = new ArrayList<>();
list.add("one");
list.add("two");
list.add("three");
list.add("four");
Observable.range(0,2).subscribe(new Subscriber<Integer>() {
@Override public void onCompleted() {
Log.d("TAG","發送完成");
}
@Override public void onError(Throwable e) {
}
@Override public void onNext(Integer integer) {
Log.d("TAG",list.get(integer));
}
});
當然創建操作符不止這些,我只是列舉出一些比較常用的操作符,想要了解更多的操作符,點擊這裏。可能寫的不是很好,若有問題,歡迎在評論下方提意見。