RxJava2慢慢摸爬中,先写一个简单的使用作为一个开始
/**
* 第一个部分是一个简单使用,分析一下各个基本方法的作用
*/
//Observable and Observer
//1、Observable被观察者,构造一个发送Integer数据的Observable,这是一个接口,无法直接实例化,需要通过构造器进行配置
Observable<Integer> observable = Observable.create(new ObservableOnSubscribe<Integer>() {
//唯一一个需要实现的方法
@Override
public void subscribe(@NonNull ObservableEmitter<Integer> e) throws Exception {
Log.d("MainActivity", Thread.currentThread().getName()+" emit 1");
/**
* 一般发送的数据有三种,
* 1、正常数据
* 2、一个数据已经发完的信号,提示观察者我的消息已经发完了
* 3、一个获得错误数据的信号,与2是互斥关系
*/
//发送正常数据
e.onNext(1);
//发送已经完成的信号
//e.onComplete();
//发送Error信号
//e.onError();
}
});
//2、Observer观察者,也是一个接口,但只需要实现方法即可
Observer<Integer> observer = new Observer<Integer>() {
Disposable disposable;
//获取一个Disposable,Disposable的作用就是可以从观察者,主动断开与被观察者的连接
@Override
public void onSubscribe(Disposable d) {
Log.d("MainActivity", "onSubscribe");
disposable = d;
}
@Override
public void onNext(Integer integer) {
Log.d("MainActivity", Thread.currentThread().getName()+" onNext");
Log.d("MainActivity", "integer:" + integer);
}
@Override
public void onError(Throwable e) {
Log.d("MainActivity", "onError");
}
@Override
public void onComplete() {
Log.d("MainActivity", "onComplete");
}
};
//3、建立连接(被观察者注册观察者)
observable
//指定Observable在新线程执行
.subscribeOn(Schedulers.newThread())
//指定Observer在主线程执行
.observeOn(AndroidSchedulers.mainThread())
//注册
.subscribe(observer);