rxAndroid的github地址https://github.com/ReactiveX/RxAndroid
配置:module下
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'io.reactivex.rxjava2:rxjava:2.0.5'
这里主要介绍基本的使用以及Action和Function的一些变动
以下是RxJava的标准使用
private void normalCreate() {
//创建观察者,subscriber或observer
Observer<String> observer=new Observer<String>() {
@Override
/** * Provides the Observer with the means of cancelling (disposing) the * connection (channel) with the Observable in both * synchronous (from within {@link #onNext(Object)}) and asynchronous manner. * @param d the Disposable instance whose {@link Disposable#dispose()} can * be called anytime to cancel the connection * @since 2.0 */
public void onSubscribe(Disposable d) {
//可用于取消订阅
d.dispose();
//还可以判断是否处于取消状态
//boolean b=d.isDisposed();
}
//一般需要展示
@Override
public void onNext(String s) {
Log.e("TAG", "onNext: "+s );
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
};
//创建被观察者
//和RxJava1.0相比,他们都增加了throws Exception,也就是说,在这些方法做某些操作就不需要try-catch 。
Observable<String> observable=Observable.create(new ObservableOnSubscribe<String>() {
@Override
//将事件发射出去,持有观察者的对象
public void subscribe(ObservableEmitter<String> e) throws Exception {
e.onNext("第一次调用");
e.onNext("第二次调用");
e.onNext("第三次调用");
e.onComplete();
}
});
//确立订阅关系
observable.subscribe(observer);
}
private void mapDemo() {
//在2.0后命名规则有了改变
//Action1--------Consumer一个参数的
//Action2--------BiConsumer两个参数的
//而Function的也一样
Observable.just("图片存放路径").map(new Function<String, Bitmap>() {
@Override
public Bitmap apply(String s) throws Exception {
return getBitmapFromFile(s);
}
}).subscribeOn(Schedules.io())//指定 subscribe() 事件发送发生在 IO 线程
.observeOn(AndroidSchedulers.mainThread())//指定 Subscriber 的回调处理发生在主线程
//这里的Action一个参数的改为COnsumer
.subscribe(new Consumer<Bitmap>() {
@Override
public void accept(Bitmap bitmap) throws Exception {
iv.setImageBitmap(bitmap);
}
});
}