RxJava实战演示1------基本代码使用
来源:互联网 发布:jquery json转数组 编辑:程序博客网 时间:2024/06/15 09:03
声明:本文适合有一点RxJava语法基础的同学阅读,如果基础为零,建议先看下仍物线大神的此篇文章:http://gank.io/post/560e15be2dca930e00da1083
1.应用程序配置,如果使用java8的lambda表达式的话,需要额外添加如下配置
在全局build.gradle的 dependencies中添加:classpath 'me.tatarka:gradle-retrolambda:2.5.0'
在app的build.gradle中添加如下内容:apply plugin: 'me.tatarka.retrolambda',android空间下添加
compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }正常的Rxjava配置,在dependencies中添加
compile 'io.reactivex:rxjava:1.1.0' compile 'io.reactivex:rxandroid:1.1.0'本文将添加,以下配置
compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:21.0.3' compile 'com.android.support:cardview-v7:21.0.3' compile 'com.android.support:recyclerview-v7:21.0.3' compile 'io.reactivex:rxjava:1.1.0' compile 'io.reactivex:rxandroid:1.1.0' compile 'com.google.code.gson:gson:2.4' compile 'com.jakewharton:butterknife:7.0.1' compile 'com.squareup.picasso:picasso:2.5.2' compile 'com.squareup.okhttp3:okhttp:3.+'
2.实例演示,基本用法
/** * 使用create方式 */ public static void createObserable() { //定义被观察者, Observable<String> observable = Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> subscriber) { if (!subscriber.isUnsubscribed()) { subscriber.onNext("hello"); subscriber.onNext("hi"); subscriber.onNext(downLoadJson()); subscriber.onNext("world"); subscriber.onCompleted(); } } }); Subscriber<String> showsub = new Subscriber<String>() { @Override public void onCompleted() { Log.i(TAG, "onCompleted"); } @Override public void onError(Throwable e) { Log.i(TAG, e.getMessage()); } @Override public void onNext(String s) { Log.i(TAG, "result-->>" + s); } }; observable.subscribe(showsub);//关联被观察者 } /** * 调用下载方法 * * @return */ public static String downLoadJson() { return "json data"; } /** * create 第二种方式 */ public static void createPrint() { Observable.create(new Observable.OnSubscribe<Integer>() { @Override public void call(Subscriber<? super Integer> subscriber) { if (!subscriber.isUnsubscribed()) { for (int i = 1; i <= 10; i++) { subscriber.onNext(i); } subscriber.onCompleted(); } } }).subscribe(new Subscriber<Integer>() { @Override public void onCompleted() { Log.i(TAG, "onCompleted"); } @Override public void onError(Throwable e) { Log.i(TAG, e.getMessage()); } @Override public void onNext(Integer integer) { Log.i(TAG, "result-->>" + integer); } }); } /*** * 使用在被观察者,返回的对象一般都是数值类型 */ public static void from() { Integer[] items = {1, 2, 3, 4, 5, 6, 7, 8, 9}; Observable observable = Observable.from(items); observable.subscribe(new Action1() { @Override public void call(Object o) { Log.i(TAG, o.toString()); } }); } /** * 指定某一时刻进行数据发送,轮询发射,注意与timer的区别 */ public static void interval() { Integer[] items = {1, 2, 3, 4, 5}; Observable observable = Observable.interval(1, 1, TimeUnit.SECONDS);//每过一秒发送1个数据 observable.subscribe(new Action1() { @Override public void call(Object o) { Log.i(TAG, o.toString()); } }); } /** * 处理数组集合,将会按顺序输出1,2,3,4,5,6,3,5...... */ public static void just() { Integer[] items1 = {1, 2, 3, 4, 5, 6}; Integer[] items2 = {3, 5, 6, 8, 3, 8}; Observable observable = Observable.just(items1, items2); observable.subscribe(new Subscriber<Integer[]>() { @Override public void onCompleted() { Log.i(TAG, "onCompleted"); } @Override public void onError(Throwable e) { Log.i(TAG, e.getMessage()); } @Override public void onNext(Integer[] o) { for(int i=0;i<o.length;i++){ Log.i(TAG,"next:"+o[i]); } } }); } //Observable.just(items1, items2).repeat(3).subscribe() 重复进行3次发射
<pre name="code" class="java">/** * 使用范围数据,指定输出数据的范围 */
public static void range(){
Observable observable = Observable.range(1, 40);//第一个是起始点,第二个是想发射数字的个数
observable.subscribe(new Subscriber<Integer>()
{ @Override
public void onCompleted()
{ Log.i(TAG, "onCompleted");
}
@Override
public void onError(Throwable e)
{ Log.i(TAG, e.getMessage()); }
@Override
public void onNext(Integer o)
{ Log.i(TAG,"next:"+o); }
});
}
/** * 使用过滤功能,将只会输出1,2,3,4 */
public static void filter(){
Observable observable = Observable.just(1,2,3,4,5,7,8);
observable.filter(new Func1<Integer,Boolean>()
{ @Override
public Boolean call(Integer o)
{ return o<5; } }).observeOn(Schedulers.io()).subscribe(new Subscriber<Integer>() {
@Override public void onCompleted() { }
@Override public void onError(Throwable e) { }
@Override public void onNext(Integer o)
{ Log.i(TAG,o.toString()); }
});
}
Observable.timer(3,TimeUnit.SECONDS)//3秒后再进行发射.subscribe(new Observable<Long>() {@Overridepublic void onCompleted() {}@Overridepublic void onError(Throwable e) {}@Overridepublic void onNext(Long number) {Log.d("RXJAVA", "I say " + number);}});
0 0
- RxJava实战演示1------基本代码使用
- Retrofit+RxJava实战日志(2)-基本使用
- RxJava实战演示2,获取网络图片
- RxJava实战演示3----okhttp3表单提交
- RxJava的基本使用
- Rxjava基本使用
- RxJava的基本使用
- RxJava基本使用
- Rxjava基本使用
- RxJava的基本使用
- RxJava基本使用
- RxJava的基本使用
- Rxjava基本使用
- jquery-pager的基本使用及与ajax结合使用实战演示
- RxJava 与 Retrofit 基本使用
- RxJava RxAndroid基本使用介绍
- RxJava(RxAndroid)基本使用入门
- RxJava学习之基本使用
- 日期计算
- KenLM代码学习之lmplz_main.cc
- MongoDB 投影
- leetcode:word-break-ii
- CentOS 6.8安装 glibc 2.15
- RxJava实战演示1------基本代码使用
- dbus-python指南
- idea和eclipse 的debug调试快捷键对比
- JavaScript将对象转换为JSON
- 表单填写后输回车跳转到下一个输入
- Blueprints - 蓝图之间的交互
- 自动调整linux系统时间和时区与Internet时间同步
- Objective-C文字加阴影方法总结
- 关于Android SQLite3多线程并发问题,学习笔记。