1.项目地址
在:MainActivity4
2.讲解
1.map,
int类型转为String
Observable.just(1)
.map(new Function<Integer, String>() {//int转String
@Override
public String apply(Integer integer) throws Throwable {
//1
Log.d(TAG, "apply: "+integer);
return "["+integer+"]";
}
})
.subscribe(new Observer<String>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull String s) {
Log.d(TAG, "onNext: "+s);
}
@Override
public void onError(@NonNull Throwable e) {
}
@Override
public void onComplete() {
}
});
int转String再转Bitmap
Observable.just(1)
.map(new Function<Integer, String>() {
@Override
public String apply(Integer integer) throws Throwable {
Log.d(TAG, "apply: "+integer);
return "["+integer+"]";
}
})
.map(new Function<String, Bitmap>() {
@Override
public Bitmap apply(String s) throws Throwable {
Log.d(TAG, "apply: "+s);
return Bitmap.createBitmap(1920,1280,Bitmap.Config.ARGB_8888);
}
}).subscribe(new Observer<Bitmap>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull Bitmap bitmap) {
Log.d(TAG, "onNext: "+bitmap);
}
@Override
public void onError(@NonNull Throwable e) {
}
@Override
public void onComplete() {
}
});
2.flatMap
返回一个观察者(int 转String):
Observable.just(1111)
.flatMap(new Function<Integer, ObservableSource<String>>() {
@Override
public ObservableSource<String> apply(Integer integer) throws Throwable {
return Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(@NonNull ObservableEmitter<String> emitter) throws Throwable {
emitter.onNext(integer+"flatMap变换操作符");
emitter.onNext(integer+"flatMap变换操作符");
emitter.onComplete();
}
});
}
})
//订阅
.subscribe(new Consumer<String>() {
@Override
public void accept(String s) throws Throwable {
Log.d(TAG, "accept: "+s);
}
});
为每个值拼接,转为list,然后延迟打印:
Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(@NonNull ObservableEmitter<String> emitter) throws Throwable {
emitter.onNext("步惊云");
emitter.onNext("雄霸");
emitter.onNext("无名");
}
})
.flatMap(new Function<String, ObservableSource<?>>() {
@Override
public ObservableSource<?> apply(String s) throws Throwable {
List<String> list=new ArrayList<>();
for (int i = 0; i < 3; i++) {
list.add(s+"下标:"+1+i);
}
return Observable.fromIterable(list).delay(1, TimeUnit.SECONDS);//创建型操作符,创建被观察者
}
})
//订阅
.subscribe(new Consumer<Object>() {
@Override
public void accept(Object o) throws Throwable {
Log.d(TAG, "accept: "+o);
}
});
打印结果: