简单说就是:一个被观察者,一个(或多个)观察者,被观察者给观察者发消息。
具体就是:
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
Rxjava.jar下载 Rxandroid.jar下载
https://download.csdn.net/download/c15423/10113481
https://download.csdn.net/download/java007hf/10045735