正在努力中,今天22:00前可以完成
1 生活举例
1.1 假设场景
用餐高峰期,在一家很火的餐厅吃饭是需要叫号排队的,此刻我们已经取到号码
1.2 运转流程
我们在一旁听着,当小姐姐叫号,不是我们的号码就继续等待,是我们的号码时,我们就起身进入餐厅
1.3 名词映射
生活名词 | RxJava名词 | 作用 |
---|---|---|
顾客 | 观察者 | 负责监听事件(监听叫号,根据参数采取不同的行为,等待或起身) |
服务员 | 被观察者 | 负责产生事件(叫号,参数是号码) |
叫号单 | 署名 | 连接观察者与被观察者 |
叫号 | 事件 | 观察者与被观察者之间沟通的载体 |
1.4 一言以蔽之
被观察者 (Observable) 通过 署名或者签署(Subscribe) 按顺序发送事件 给观察者 (Observer), 观察者(Observer) 按顺序接收事件 && 作出对应的响应动作。
2 学会使用
2.1 基本用法
package liujinliang.natappvip.cc.myapplication;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 创建被观察者
Observable<Integer> observable = Observable.create(new ObservableOnSubscribe<Integer>() {
@Override
public void subscribe(ObservableEmitter<Integer> observableEmitter) throws Exception {
observableEmitter.onNext(1);
observableEmitter.onComplete();
}
});
// 创建观察者
Observer<Integer> observer = new Observer<Integer>() {
@Override
public void onSubscribe(Disposable disposable) {
Log.i("Gene", "onSubscribe");
}
@Override
public void onNext(Integer integer) {
Log.i("Gene", "onNext:" + integer);
}
@Override
public void onError(Throwable throwable) {
Log.i("Gene", "onError");
}
@Override
public void onComplete() {
Log.i("Gene", "onComplete");
}
};
// 关联观察者与被观察者
observable.subscribe(observer);
}
}
2.2 链式调用
package liujinliang.natappvip.cc.myapplication;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 创建被观察者
Observable.create(new ObservableOnSubscribe<Integer>() {
@Override
public void subscribe(ObservableEmitter<Integer> observableEmitter) throws Exception {
observableEmitter.onNext(1);
observableEmitter.onComplete();
}
}).subscribe(new Observer<Integer>() {
@Override
public void onSubscribe(Disposable disposable) {
Log.i("Gene", "onSubscribe");
}
@Override
public void onNext(Integer integer) {
Log.i("Gene", "onNext:" + integer);
}
@Override
public void onError(Throwable throwable) {
Log.i("Gene", "onError");
}
@Override
public void onComplete() {
Log.i("Gene", "onComplete");
}
});
}
}