RxJava1.X升级到RxJava2.X笔记
来源:互联网 发布:js改变css 编辑:程序博客网 时间:2024/04/29 16:15
RxJava 2.X + Retrofit + OkHttp 简单示例点这里
library依赖变化
//1.Xcompile 'io.reactivex:rxjava:1.2.1'compile 'io.reactivex:rxandroid:1.2.1'//2.Xcompile 'io.reactivex.rxjava2:rxjava:2.0.0'compile 'io.reactivex.rxjava2:rxandroid:2.0.0'
package变化
变动主要为rx.xxx –> io.reactivex.xxx
//1.Ximport rx.Observable;import rx.Subscription;import rx.android.schedulers.AndroidSchedulers;import rx.schedulers.Schedulers;import rx.functions.Action1;//2.Ximport io.reactivex.Observable;import io.reactivex.ObservableSource;import io.reactivex.ObservableTransformer;import io.reactivex.disposables.Disposable;import io.reactivex.android.schedulers.AndroidSchedulers;import io.reactivex.schedulers.Schedulers;import io.reactivex.functions.Consumer;
null值
RxJava 2.X不再支持null值,如果传入一个null会抛出NullPointerException
Observable.just(null);Single.just(null);Observable.fromCallable(() -> null) .subscribe(System.out::println, Throwable::printStackTrace);Observable.just(1).map(v -> null) .subscribe(System.out::println, Throwable::printStackTrace);
案例1
//1.Xpublic static final Observable.Transformer IO_TRANSFORMER = new Observable.Transformer() { @Override public Object call(Object observable) { return ((Observable) observable).subscribeOn(Schedulers.io()) .unsubscribeOn(Schedulers.io()) .observeOn(Schedulers.io()); }};public static final <T> Observable.Transformer<T, T> applySchedulers(Observable.Transformer transformer){ return (Observable.Transformer<T, T>)transformer;}Action1<Integer> onNext = null;String[] items = { "item1", "item2", "item3" };Subscription subscription = Observable.from(items) .compose(RxUtil.<String>applySchedulers(IO_TRANSFORMER)) .map(new Func1<String, Integer>() { @Override public Integer call(String s) { return Integer.valueOf(s); } }) .subscribe(onNext);//TODO subscription.unsubscribe(); //2.Xpublic static final ObservableTransformer IO_TRANSFORMER = new ObservableTransformer() { @Override public ObservableSource apply(Observable upstream) { return upstream.subscribeOn(Schedulers.io()) .unsubscribeOn(Schedulers.io()) .observeOn(Schedulers.io()); }};public static final <T> ObservableTransformer<T, T> applySchedulers(ObservableTransformer transformer){ return (ObservableTransformer<T, T>)transformer;}Consumer<Integer> onNext = null;String[] items = { "item1", "item2", "item3" };Disposable disposable = Observable.fromArray(items) .compose(RxUtil.<String>applySchedulers(IO_TRANSFORMER)) .map(new Function<String, Integer>() { @Override public Integer apply(String s) throws Exception { return Integer.valueOf(s); } }) .subscribe(onNext);//TODO disposable.dispose();
- .subscribe(…)返回值的变化:1.X为Subscription, 2.X为Disposable
- Transformer的变化:1.X为rx.Observable内部的Transformer接- 口, 继承自Func1
- AndroidSchedulers的变化: 1.X为rx.android.schedulers.AndroidSchedulers, 2.X为io.reactivex.android.schedulers.AndroidSchedulers
Func1的变化: 1.X为rx.functions.Func1, 2.X为io.reactivex.functions.Function
其它重载方法见下方截图
案例2
//1.Xpublic class AppBaseActivity extends AppCompatActivity { ... private CompositeSubscription mCompositeSubscription; protected void addSubscription(Subscription subscription) { if (null == mCompositeSubscription) { mCompositeSubscription = new CompositeSubscription(); } mCompositeSubscription.add(subscription); } @Override protected void onDestroy() { if (null != mCompositeSubscription) { mCompositeSubscription.unsubscribe(); } super.onDestroy(); } ...}//2.Xpublic class AppBaseActivity extends AppCompatActivity { ... private CompositeDisposable mCompositeDisposable; protected void addDisposable(Disposable disposable) { if (null == mCompositeDisposable) { mCompositeDisposable = new CompositeDisposable(); } mCompositeDisposable.add(disposable); } @Override protected void onDestroy() { if (null != mCompositeDisposable) { mCompositeDisposable.clear(); } super.onDestroy(); } ...}
从零开始的RxJava2.0教程(四)在安卓中的应用
[置顶] RxJava,Rxandroid 2.0的使用方式
Retrofit 2.0使用详解,配合OkHttp、Gson,Android最强网络请求框架
Retrofit + RxJava + OkHttp 让网络请求变的简单-基础篇
Retrofit + RxJava + OkHttp 让网络请求变的简单-封装篇
给 Android 开发者的 RxJava 详解
我所理解的RxJava——上手其实很简单(一)
RxJava 的使用入门
阅读全文
0 0
- RxJava1.X升级到RxJava2.X笔记
- RxJava1.X升级到RxJava2.X笔记
- Rxjava1升级Rxjava2坑
- 3.RxJava2.x与RxJava1.x的差异对比
- 从RxJava1.x到2.0
- RxJava1.x
- RxJava1.x 初识
- Rxjava1.x实现定时器
- 2. RxJava1.x基本概念
- rxjava1.x学习
- rxjava2.x
- RxJava1.x ------ 取消订阅,Subscription
- Retrofit结合RxJava1.x使用
- RxJava1.x从入门到放弃再到RxJava 2.x(一)
- RxJava1.x从入门到放弃再到RxJava 2.x(二)
- RxJava1.x从入门到放弃再到RxJava 2.x(三)
- RxJava1.x从入门到放弃再到RxJava 2.x(四)
- Jenkins升级:1.x到2.x
- 产品思维对UI设计师的重要性
- Java 并发编程:深入剖析 ThreadLocal
- Kudu
- Python Windows安装
- Git的使用方法总结
- RxJava1.X升级到RxJava2.X笔记
- Java基础 :反射、注解、代理、线程池、依赖的学习和理解
- Jpush极光推送
- TotoiseSVN的基本使用方法
- 人脸对齐之判别模型
- Python中的模块详解
- Javascript 异步编程的4种方法
- MyFlag Step11:后台代码编写、客户端具体功能实现与界面优化
- java Calendar 日期处理