public void onClick(View view) {
switch (view.getId()) {
case R.id.main_btn_a:
Observable<String> observablea =
Observable.create(Subscriber -> Subscriber.onNext("atest"));
// Observable.create(new Observable.OnSubscribe<String>() {
// @Override
// public void call(Subscriber<? super String> subscriber) {
//
// }
// });
observablea.observeOn(AndroidSchedulers.mainThread());
observablea.subscribeOn(Schedulers.newThread());
observablea.subscribe(new Observer<String>() {
@Override
public void onNext(String s) {
Log.i(TAG, "onNext------" + s);
}
@Override
public void onCompleted() {
Log.i(TAG, "onCompleted------");
}
@Override
public void onError(Throwable throwable) {
}
});
break;
case R.id.main_btn_b://参数 一个一个地处理
Observable<String> observableb = Observable.from(arr);
//一下方法 需要连续调用,否则影响方法调用(原因:方法返回了新的对象)
observableb.observeOn(AndroidSchedulers.mainThread()).
subscribeOn(Schedulers.newThread()).
map(new Func1<String, String>() {
//map映射,对数据转换
@Override
public String call(String s) {
Log.i(TAG, "qqq----" + s);
return s + "b";
}
}).
subscribe(s -> toast(s));
break;
case R.id.main_btn_c://观察者 只调用onNext()方法
Observable<String> observablec = Observable.just("c1", "c2");
observablec.observeOn(AndroidSchedulers.mainThread()).
subscribeOn(Schedulers.newThread()).
flatMap(new Func1<String, Observable<String>>() {
//flatmap 映射,把输入数组映射多个值, 依次分发
//reduce 简化,和flatmap相反,把多个数组的值, 合成一个数据
@Override
public Observable<String> call(String s) {
return Observable.just(s);
// return null;
}
})
.reduce(new Func2<String, String, String>() {
@Override
public String call(String s, String s2) {
return s + s2;
}
})
.subscribe(this::toast);
break;
}
}
配置
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.1.0'
testCompile 'junit:junit:4.12'
//-------------
compile 'io.reactivex:rxandroid:1.2.1'
compile 'io.reactivex:rxjava:1.1.6'
}
总结
//flatmap 映射,把输入数组映射多个值, 依次分发
//reduce 简化,和flatmap相反,把多个数组的值, 合成一个数据
//多个 subscribe 按照单个subscribe顺序 的基础上调用 onNext(),onCompled()
//Observable 除了creat,from,just方法 之外的map,flatMap,reduce,subscribe等连续调用