RxJava的一些标志符号学习(一)
来源:互联网 发布:淘宝商城女棉鞋 编辑:程序博客网 时间:2024/05/20 07:37
Just ,Skip
Just将Object对象逐一输出,skip跳过,subscribeOn表示被观察者运行线程,observeOn表示观察者运行线程,Skip(1)表示跳过第一个Object,
public void getObservable(){ Observable.just(item,item2) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .skip(1) .subscribe(new Observer<String[]>() { @Override public void onSubscribe(@NonNull Disposable d) { Log.i("mao","onSubscribe"); } @Override public void onNext(@NonNull String[] s) { for(int i=0;i<s.length;i++){ textview.append(s[i]); textview.append("\n"); } Log.i("mao","onNext"); } @Override public void onError(@NonNull Throwable e) { Log.i("mao","onError"); } @Override public void onComplete() { Log.i("mao","onComplete"); } });}
Map
通过自定义函数转化数据,使用onNext方法发送了List数据,通过Map方法将参数T转化为需要参数
public void getObservable2(){ Observable observabl= Observable.create(new ObservableOnSubscribe<List<AUser>>() { @Override public void subscribe(@NonNull ObservableEmitter<List<AUser>> e) throws Exception { e.onNext(Utils.getAUserList()); e.onComplete(); } }); Observer<List<User>> observer=new Observer<List<User>>() { @Override public void onSubscribe(@NonNull Disposable d) { Log.i("mao","onSubscribe"); } @Override public void onNext(@NonNull List<User> users) { Log.i("mao","onNext"); for(User use:users){ // textview.append(use.getId()); // textview.append("\n"); textview.append(use.getName()); textview.append("\n"); // textview.append(use.getPsd()); } } @Override public void onError(@NonNull Throwable e) { Log.i("mao","onError"); } @Override public void onComplete() { Log.i("mao","onComplete"); } }; observabl.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .map(new Function<List<AUser>,List<User>>() { @Override public List<User> apply(@NonNull List<AUser> aUsers) throws Exception { return Utils.getUserList(aUsers); } }).subscribe(observer);}
Zip
通过zip函数将多个被观察者Observable 数据进行函数处理,输出给观察者Observer
public void getObservable3(){ Observable observabl= Observable.create(new ObservableOnSubscribe<List<AUser>>() { @Override public void subscribe(@NonNull ObservableEmitter<List<AUser>> e) throws Exception { e.onNext(Utils.getAUserList()); e.onComplete(); } }); Observable observab2= Observable.create(new ObservableOnSubscribe<List<AUser>>() { @Override public void subscribe(@NonNull ObservableEmitter<List<AUser>> e) throws Exception { e.onNext(Utils.getAUserList2()); e.onComplete(); } }); Observer<List<AUser>> observer=new Observer<List<AUser>>() { @Override public void onSubscribe(@NonNull Disposable d) { Log.i("mao","onSubscribe"); } @Override public void onNext(@NonNull List<AUser> aUsers) { for(AUser auser:aUsers){ textview.append(auser.getName()); textview.append("\n"); } Log.i("mao","onSubscribe"); } @Override public void onError(@NonNull Throwable e) { Log.i("mao","onError"); } @Override public void onComplete() { Log.i("mao","onComplete"); } }; Observable.zip(observabl, observab2, new BiFunction<List<AUser>,List<AUser>,List<AUser>>() { @Override public List<AUser> apply(@NonNull List<AUser> aUsers, @NonNull List<AUser> aUsers2) throws Exception { return Utils.getZipAUserList(aUsers,aUsers2); } }).subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(observer);}</php>
CompositeDisposable
Disposable处理每一次的连接,CompositeDisposable用来存储每一次的Disposable,当Activity被销毁时,可以调用CompositeDisposable的clear方法截断所有连接。
//Disposable,take(count)只发送前几个 public void getObservable4(){ Observable observable=Observable.defer(new Callable<ObservableSource<?>>() { @Override public ObservableSource<?> call() throws Exception { return Observable.just("one","two","three","four"); } }); DisposableObserver<String> disposableObserver=new DisposableObserver<String>() { @Override public void onNext(@NonNull String s) { textview.append(s); textview.append("\n"); Log.i("mao","onNext"); } @Override public void onError(@NonNull Throwable e) { Log.i("mao","onError"); } @Override public void onComplete() { textview.append("onComplete"); textview.append("\n"); Log.i("mao","onComplete"); } }; compositeDisposable.add((Disposable) observable.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .take(3) .subscribeWith(disposableObserver));}
Timer
延迟执行任务,注意线程问题
public void getObservable5(){ Observable.timer(2, TimeUnit.SECONDS,AndroidSchedulers.mainThread()).map(new Function<Long, Long>() { @Override public Long apply(@NonNull Long aLong) throws Exception { return Long.valueOf(6); } }).subscribe(new Consumer<Long>() { @Override public void accept(Long aLong) throws Exception { textview.append(aLong+""); textview.append("\n"); } });}
interval
interval一下方法表示首次延迟三秒从0开始发送递增数据,之后每两秒发送一次,可以用于app的启动页面
Single发送单条数据,SingleObserver有onSuccess方法代替了onNext方法,与之对用CompletableObserver存在onComplete方法,不存在onNext方法
public void getObservable6(){ Observable.interval(3,2,TimeUnit.SECONDS,AndroidSchedulers.mainThread()) .subscribe(new Consumer<Long>() { @Override public void accept(Long aLong) throws Exception { textview.append(aLong+""); textview.append("\n"); } }); Single.just("DY").subscribe(new Consumer<String>() { @Override public void accept(String s) throws Exception { textview.append(s); textview.append("\n"); } }); SingleObserver<String> observer=new SingleObserver<String>() { @Override public void onSubscribe(@NonNull Disposable d) { } @Override public void onSuccess(@NonNull String s) { } @Override public void onError(@NonNull Throwable e) { } };}
Flowable reduce
reduce对Flowable中数据进行处理,发送一个全新的数据
public void getObservable8(){ Flowable<Integer> flowable=Flowable.just(5,10); flowable.reduce(10,new BiFunction<Integer, Integer, Integer>() { @Override public Integer apply(@NonNull Integer integer, @NonNull Integer integer2) throws Exception { return integer*integer2; } }).subscribe(new Consumer<Integer>() { @Override public void accept(Integer integer) throws Exception { textview.append(integer+""); textview.append("\n"); } });
buffer filter
buffer 不太好理解,buffer定期收集Observable的数据放入数据包中,参数分表表示数据的长度,跨度
filter表示过滤,
public void getObservable9(){ Observable<List<String>> observable=Observable.just("one","two","three","four") .buffer(3,1); Observer<List<String>> observer=new Observer<List<String>>() { @Override public void onSubscribe(@NonNull Disposable d) { Log.i("mao","onSubscribe"); } @Override public void onNext(@NonNull List<String> strings) { Log.i("mao","onNext"); textview.append("size="+strings.size()); for(String s:strings){ textview.append(s); textview.append("\n"); } } @Override public void onError(@NonNull Throwable e) { Log.i("mao","onError"); } @Override public void onComplete() { Log.i("mao","onComplete"); } }; observable.filter(new Predicate<List<String>>() { @Override public boolean test(@NonNull List<String> strings) throws Exception { return strings.size()%3==0; } }).subscribe(observer);}
阅读全文
0 0
- RxJava的一些标志符号学习(一)
- RxJava的学习旅程(一)
- 【RxJava】的学习(一)
- Android 开发者的 RxJava 学习一,走进RxJava
- RxJava 学习笔记一
- RxJAVA学习笔记(一)
- RxJava学习一:初识
- RxJava学习(一)
- RxJava学习(一)
- RxJava学习(一)
- RxJava 学习(一)
- Rxjava学习笔记(一)
- RxJava学习(一)
- RXjava学习(一)
- Rxjava学习笔记(一)
- Rxjava学习(一)
- Markdown的十个常用标志符号
- X86汇编语言标志位的符号表示
- 栈的基本操作
- Socket 通信流程
- C# 匿名对象(匿名类型)、var、动态类型 dynamic
- git 拉新分支、分支关联、合并分支、分支删除
- 【PAT】【Advanced Level】1092. To Buy or Not to Buy (20)
- RxJava的一些标志符号学习(一)
- Python学习笔记 9
- butterKnife注解不起作用问题
- MD5加密String
- redis集群搭建
- Tomcat端口号修改
- LED的流水灯实验
- First
- python3连接oracle的测试