Android中RxJava使用1----基本原理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhaihaohao1/article/details/83446465

简单说就是:一个被观察者,一个(或多个)观察者,被观察者给观察者发消息。
具体就是:
1)Observable:被观察者(主题Subject)
2)Observer/Subscriber :观察者
3)Subscribe:订阅(就是被观察者给观察者发消息)
Observable 和 Observer 通过 subscribe() 方法实现订阅关系

具体实现步骤
1、在build.gradle中添加依赖:

compile 'com.jakewharton.rxbinding:rxbinding:0.4.0'

这个依赖包中包含了
rxbinding-0.4.0 (操作控件)
rxjava-1.1.0 (Java相关的)
rxandroid-1.1.0 (安卓相关的)
在这里插入图片描述
2、具体代码:

package com.zhh.app;

import android.app.Activity;
import android.os.Bundle;

import com.orhanobut.logger.Logger;

import rx.Observable;
import rx.Observer;
import rx.Subscriber;

/**
 * 第一节
 * 基本使用
 * 1. Observable:被观察者(主题Subject)
 * 2. Observer/Subscriber :观察者
 * 3.Subscribe:订阅(就是被观察者给观察者发消息)
 * Observable 和 Observer 通过 subscribe() 方法实现订阅关系
 */
public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
//      被观察者
        Observable<String> observable = getObservable();
//      观察者
        Observer<String> observer = getObserver();
//      订阅,实现把数据从被观察者,发送到观察者
//      通常,把被观察者和观察者放在不同的文件里,收发消息
        observable.subscribe(observer);

    }
    /**
     * 被观察者,发消息
     */
    public Observable<String> getObservable() {
        Observable<String> observable = Observable.create(new Observable.OnSubscribe<String>() {
            @Override
            public void call(Subscriber<? super String> subscriber) {
                //              消息是一条一条发送的
                subscriber.onNext("我");
                subscriber.onNext("是");
                subscriber.onNext("翟");
                subscriber.onNext("浩浩");
                subscriber.onCompleted();
            }
        });
        return observable;
    }

    /**
     * 观察者,接收消息
     * @return
     */
    private Observer<String> getObserver() {
        Observer observer = new Observer<String>() {
            @Override
            public void onCompleted() {
//              完成
            }

            @Override
            public void onError(Throwable e) {
//               错误
            }

            @Override
            public void onNext(String value) {
//             接收消息
//             消息是一条一条接收的
                Logger.t("111").d(value);
//              打印出来的数据
//              我
//              是
//              翟
//              浩浩
            }
        };
        return observer;
    }


}

RxBinding地址
https://github.com/JakeWharton/RxBinding

RxJava中文文档(PDF/ePub/Mobi格式下载 会全面一点)
https://mcxiaoke.gitbooks.io/rxdocs/content/

RxJava英文文档
http://reactivex.io/documentation/operators.html#alphabetical

参考视频:
https://www.cniao5.com/course/lessons/10120

源码下载:
https://download.csdn.net/download/zhaihaohao1/10748103
源码----RxJavaCN2----app

猜你喜欢

转载自blog.csdn.net/zhaihaohao1/article/details/83446465