RxJava常用操作符
1Observable的创建
1.1from()
转换集合为一个每次发射集合中一个元素的Observable对象。可用来遍历集合。
方法列表:
publicstaticObservablefrom(Futurefuture)
publicstaticObservablefrom(Futurefuture,longtimeout,TimeUnitunit)
publicstaticObservablefrom(Futurefuture,Schedulerscheduler)
publicstaticObservablefrom(Iterableiterable)
publicstaticObservablefrom(T[]array)
栗子:
//1.遍历集合
Observableobservable=Observable.from(newString[]{"hello","hi"});
1
2
//2.使用Future创建Observable,Future表示一个异步计算的结果。
FutureTaskfutureTask=newFutureTask(newCallable(){
@Override
publicStringcall()throwsException{
//TODO执行异步操作并返回数据
return"hihi";
}
});
Scheduler.Workerworker=Schedulers.io().createWorker();
worker.schedule(newAction0(){
@Override
publicvoidcall(){
futureTask.run();
}
});
Observableobservable=Observable.from(futureTask);
1.2just()
转换一个或多个Object为依次发射这些Object的Observable对象。
方法列表:
publicstaticObservablejust(finalTvalue)
publicstaticObservablejust(Tt1,Tt2)
publicstaticObservablejust(Tt1,Tt2,Tt3)
publicstaticObservablejust(Tt1,Tt2,Tt3,Tt4)
publicstaticObservablejust(Tt1,Tt2,Tt3,Tt4,Tt5)
publicstaticObservablejust(Tt1,Tt2,Tt3,Tt4,Tt5,Tt6)
publicstaticObservablejust(Tt1,Tt2,Tt3,Tt4,Tt5,Tt6,Tt7)
publicstaticObservablejust(Tt1,Tt2,Tt3,Tt4,Tt5,Tt6,Tt7,Tt8)
publicstaticObservablejust(Tt1,Tt2,Tt3,Tt4,Tt5,Tt6,Tt7,Tt8,Tt9)
publicstaticObservablejust(Tt1,Tt2,Tt3,Tt4,Tt5,Tt6,Tt7,Tt8,Tt9,Tt10)
栗子:
Observableobservable=Observable.just("hello");
//使用just()遍历几个元素
Observableobservable=Observable.just("hello","hi","...");
//使用from()方法遍历,效果和just()一样。
String[]stringArrs=newString[]{"hello","hi","..."};
Observableobservable=Observable.from(stringArrs);
just()方法可传入1~10个参数,也就说当元素个数小于等于10的时候既可以使用just()也可以使用from(),否则只能用from()方法。
1.3create()
返回一个在被OnSubscribe订阅时执行特定方法的Observable对象。
方法列表:
publicstaticObservablecreate(OnSubscribef)
@BetapublicstaticObservablecreate(SyncOnSubscribesyncOnSubscribe)
@ExperimentalpublicstaticObservablecreate(AsyncOnSubscribeasyncOnSubscribe)
栗子:
Observable.OnSubscribeonSubscribe=newObservable.OnSubscribe(){
@Override
publicvoidcall(Subscribersubscriber){
//onNext()方法可执行多次
subscribe.onNext("hello");
subscribe.onCompleted();
}
};
Observable |
|