快捷操作符
Observable的創(chuàng)建方式:
just()
創(chuàng)建一個(gè)Observable漾狼,并自動調(diào)用onNext()發(fā)射數(shù)據(jù),可發(fā)射一個(gè)或一組對象谈喳。
Observable.just(1,2,3).subscribe(new Consumer<Integer>() {
@Override
public void accept(Integer integer) throws Exception {
Log.d(TAG,"接收到:"+integer);
}
});
defer()
當(dāng)觀察者訂閱時(shí)绿语,才創(chuàng)建Observable倘屹,并且對每個(gè)觀察者創(chuàng)建都是一個(gè)新的Observable。
Observable.defer(new Callable<ObservableSource<?>>() {
@Override
public ObservableSource<?> call() throws Exception {
return Observable.just("hello");
}
}).subscribe(new Consumer<Object>() {
@Override
public void accept(Object o) throws Exception {
Log.d(TAG,""+o.toString());
}
});
fromIterable()
創(chuàng)建一個(gè)Observable遍歷集合扣唱,發(fā)送每個(gè)item藕坯。相當(dāng)于多次回調(diào)onNext()方法,每次傳入一個(gè)item噪沙。
List<String> list = new ArrayList<String>();
for(int i =0;i<10;i++){
list.add("Hello"+i);
}
Observable<String> observable = Observable.fromIterable(list);
Consumer<String> consumer = new Consumer<String>() {
@Override
public void accept(String s) throws Exception {
Log.d(TAG,"接收到:"+s);
}
};
observable.subscribe(consumer);
interval( )
創(chuàng)建一個(gè)Observable炼彪,在給定的時(shí)間間隔內(nèi)發(fā)出一系列整數(shù),可用作定時(shí)器正歼。
//按照固定2秒一次調(diào)用onNext()方法
Observable.interval(2, TimeUnit.SECONDS).subscribe(new Consumer<Long>() {
@Override
public void accept(Long aLong) throws Exception {
Log.d(TAG,""+aLong);
}
});
range( )
創(chuàng)建一個(gè)Observable辐马,發(fā)射指定范圍的整數(shù)序列。
//發(fā)射1到20的數(shù)局义,即調(diào)用20次nNext()方法喜爷,依次傳入1-20數(shù)字
Observable.range(1,20).subscribe(new Consumer<Integer>() {
@Override
public void accept(Integer integer) throws Exception {
Log.d(TAG,""+integer);
}
});
timer( )
創(chuàng)建一個(gè)Observable,延遲指定時(shí)間后發(fā)射一個(gè)指定的值
//2秒后發(fā)射
Observable.timer(2, TimeUnit.SECONDS).subscribe(new Consumer<Long>() {
@Override
public void accept(Long aLong) throws Exception {
Log.d(TAG,""+aLong);
}
});
repeat( )
創(chuàng)建一個(gè)Observable萄唇,重復(fù)調(diào)用onNext()事件檩帐。
//循環(huán)發(fā)射123
Observable.just(123).repeat().subscribe(new Consumer<Integer>() {
@Override
public void accept(Integer integer) throws Exception {
Log.d(TAG,""+integer);
}
});
更多操作符可參考官方文檔:
http://reactivex.io/documentation/operators.html