移动架构38_RxJava一(简单调用)

Android移动架构汇总​​​​​​​
注意:RxJava入门不容易,本文针对零基础的朋友,希望能够帮助他们更条理和简单的开始学习RxJava
移动架构38_RxJava一(简单调用)
移动架构39_RxAndroid二(变换调用:map、flatMap、lift、compose)
移动架构40_RxAndroid三(线程控制Scheduler)三(线程控制Scheduler)
移动架构41_Retrofit+RxJava快速集成

##Introduce

RxJava的作用:

####(1)异步,IO操作:读取数据;请求网络(能够支持实现onPause、onStop取消,loading加载效果),和Retrofit实现网络框架

####(2)简洁:使得复杂嵌套回调简单化,实现链式调度逻辑;使得编码逻辑清晰简洁(是简洁不是代码减少)

####(3)观察者模式:View的防止多次触碰;实现定时效果

####(4)基于事件:实现响应式编程,可以代替EventBus

RxAndroid是在RxJava进行了进一步封装以适用于Android环境

##1 gradle集成

compile ‘io.reactivex:rxandroid:1.0.1’

##2 基本使用流程

####(1)创建观察者Observer,最终处理数据
####(2)创建被观察者Observable,他们发射数据序列
####(3)使用Observable操作符变换哪些Observables,获取严格符合你要求的数据

###1、 创建Observer观察者

####(1)创建 Observer

它决定事件触发的时候将有怎样的行为

Observer observer = new Observer() {
    @Override
    public void onNext(String s) {
        Log.d(tag, "Item: " + s);
    }

    @Override
    public void onCompleted() {
        Log.d(tag, "Completed!");
    }

    @Override
    public void onError(Throwable e) {
        Log.d(tag, "Error!");
    }
};

####(2)Subscriber:

Observer 的抽象类,基本使用方式是完全一样的
和Observer 区别:

1)onStart(): Subscriber 增加的方法。在 subscribe 刚开始,而事件还未发送之前被调用,可以用于做一些准备工作,

例如,数据的清零或重置。这是一个可选方法,默认情况下它的实现为空。
注意:如果对准备工作的线程有要求(例如弹出一个显示进度的对话框,这必须在主线程执行), onStart() 就不适用了,因为它总是在 subscribe 所发生的线程被调用,而不能指定线程。要在指定的线程来做准备工作,可以使用 doOnSubscribe() 方法

2)unsubscribe(): 这是 Subscriber 所实现的另一个接口 Subscription 的方法,用于取消订阅。在这个方法被调用后,Subscriber 将不再接收事件。一般在这个方法调用前,可以使用 isUnsubscribed() 先判断一下状态。 unsubscribe() 这个方法很重要,因为在 subscribe() 之后, Observable 会持有 Subscriber 的引用,这个引用如果不能及时被释放,将有内存泄露的风险。所以最好保持一个原则:要在不再使用的时候尽快在合适的地方(例如 onPause() onStop() 等方法中)调用 unsubscribe() 来解除引用关系,以避免内存泄露的发生。

###2、 创建Observable被观察者

####(1)just(T…): 将传入的参数依次发送出来

Observable observable = Observable.just(“Hello”, “Hi”, “Aloha”); 
// 将会依次调用: 
// onNext(“Hello”); 
// onNext(“Hi”); 
// onNext(“Aloha”); 
// onCompleted();

####(2)from(T[]) / from(Iterable

####(3) create(OnSubscribe) 要传入复杂的对象

Observable observable = Observable.create(new Observable.OnSubscribe() {
    @Override
    public void call(Subscriber subscriber) {
        subscriber.onNext("Hello");
        subscriber.onNext("Hi");
        subscriber.onNext("Aloha");
        subscriber.onCompleted();
    }
});

###3、Subscribe (订阅)

observable.subscribe(observer); 
// 或者: 
observable.subscribe(subscriber);

你可能感兴趣的:(Android移动架构,RxJava)