Rxjava简单操作字符学习
来源:互联网 发布:怎么虚拟mac地址 编辑:程序博客网 时间:2024/09/21 13:25
本人也是刚开始研究,若有错误的地方希望大家提出来,大家一起探讨.
若大家对Button的原理比较清楚,对理解Rxjava会有一定的帮助.
Rxjava
RxJava 有四个基本概念:Observable (可观察者,即被观察者)、 Observer (观察者)、 subscribe (订阅)、事件。Observable 和 Observer 通过 subscribe() 方法实现订阅关系,从而 Observable 可以在需要的时候发出事件来通知 Observer。
与传统观察者模式不同, RxJava 的事件回调方法除了普通事件 onNext() (相当于 onClick() / onEvent())之外,还定义了两个特殊的事件:onCompleted() 和 onError()。
onCompleted(): 事件队列完结。RxJava 不仅把每个事件单独处理,还会把它们看做一个队列。RxJava 规定,当不会再有新的 onNext() 发出时,需要触发 onCompleted() 方法作为标志。
onError(): 事件队列异常。在事件处理过程中出异常时,onError() 会被触发,同时队列自动终止,不允许再有事件发出。
在一个正确运行的事件序列中, onCompleted() 和 onError() 有且只有一个,并且是事件序列中的最后一个。需要注意的是,onCompleted() 和 onError() 二者也是互斥的,即在队列中调用了其中一个,就不应该再调用另一个。
例子:
1.打印一个字符串
//创建被观察者 Observable<String> observable = Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> subscriber) { subscriber.onNext("rxjava"); subscriber.onCompleted(); } }); //创建观察者 Subscriber<String> subscriber=new Subscriber<String>() { @Override public void onCompleted() { Log.d(TAG,"completed"); } @Override public void onError(Throwable e) { } @Override public void onNext(String s) { Log.d(TAG,s); } }; //订阅 observable.subscribe(subscriber);
到这里就基本完成了rxjava的一套简单的流程.
2.几个字符串一起打印
Observable.just("hello", "rxjava").subscribe(new Subscriber<String>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(String s) { Log.d(TAG, s); } });
可以换个方式
Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> subscriber) { subscriber.onNext("hello world"); subscriber.onCompleted(); } }).subscribe(new Action1<String>() { @Override public void call(String s) { Log.d(TAG, s); } }, new Action1<Throwable>() { @Override public void call(Throwable throwable) { } }, new Action0() { @Override public void call() { Log.d(TAG, "completed"); } });
3.打印字符串数组
String[] str = {"hello", "world"}; Observable.from(str).subscribe(new Subscriber<String>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(String s) { Log.d(TAG, s); } });
也可以换个方式
String[] name = {"a", "b", "c"}; Observable.from(name).subscribe(new Action1<String>() { @Override public void call(String s) { Log.d(TAG, s); } });
4.设置背景图片
Observable.create(new Observable.OnSubscribe<Drawable>() { @Override public void call(Subscriber<? super Drawable> subscriber) { Drawable drawable = getDrawable(R.mipmap.ic_launcher); subscriber.onNext(drawable); subscriber.onCompleted(); } }).subscribe(new Action1<Drawable>() { @Override public void call(Drawable drawable) { mImageView.setBackground(drawable); } });
上面都是介绍rxjava的操作符,感觉就是鸡肋,我最喜欢的还是rxjava得线程切换,实在是完美.
Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> subscriber) { SystemClock.sleep(1000); subscriber.onNext("yaohui"); } }).subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<String>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(String s) { Toast.makeText(MainActivity.this, s, Toast.LENGTH_SHORT).show(); } });
这线程的切换真心的爽.由于本人的功力有限,介绍的不是很完全.算是记录下自己学习rxjava的过程吧.
- Rxjava简单操作字符学习
- Rxjava简单学习
- Retrofit+RxJava 简单学习
- RxJava操作符学习
- RxJava学习--操作符
- RxJava学习笔记---简单使用
- RxJava-操作符 初步学习
- Rxjava操作符学习博客
- RxJava操作符学习APP
- RxJava--操作符学习笔记
- RxJava操作符学习APP
- Rxjava学习(二操作符)
- RxJava操作符学习备忘
- RxJava操作符学习笔记
- Rxjava操作符的简单使用
- RxJava(三)简单常用操作符
- RxJava学习笔记1--RxJava原理和简单实现
- RxJava入门学习------①操作符
- 19.Remove Nth Node From End of List
- CI框架(ajax分页,全选,反选,不选,批量删除)
- CSS动画中的Animation和Transition全属性实例
- 可持久化二项堆
- ]Vi/Vim查找替换使用方法
- Rxjava简单操作字符学习
- ffmpeg基本用法
- Selenium学习14--KeyBoardUtil
- Eclipse配置PyDev插件
- linux 命令
- svn E1750002
- CentOS 7安装zabbix3.0(监控本机)
- 关于与运算和取余之间的关系
- atlassian-jira-confluence-bitbucket破解