1.基本模式
1)创建观察者observer
Observer<String> observer = new Observer<String>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull String s) {
Log.d("log",s);
}
@Override
public void onError(@NonNull Throwable e) {
}
@Override
public void onComplete() {
}
};
2)创建被观察着observable
Observable<String> observable = Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(@NonNull ObservableEmitter<String> e) throws Exception {
e.onNext("coco");
e.onNext("cole");
}
});
3)建立订阅关系subscribe()
observable.subscribe(observer);
2.异步控制
observable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(observer);
subscribeOn:发布线程 onSubscribe()方法所在线程
observeOn:回调线程 onNext()方法所在线程
3.操作符
1) map 对象转换
ex.将文件路径转成文件输出
observable.map(new Function<String, File>() {
@Override
public File apply(@NonNull String s) throws Exception {
return new File(s);
}
});
2) filter 筛选
ex.筛选出文件名包含cococola的文件
observable.filter(new Predicate<String>() {
@Override
public boolean test(@NonNull String s) throws Exception {
//该项return true 为显示,false为不显示
return "cococola".equals(s);
};
3) 等等等等
4) 操作符需连起来写