这响应式编程好像也是挺厉害挺好用的样子,作为菜鸟肯定要多学一些东西
在网上查阅了一些资料 ,记录一下自己的一些理解,有错误的地方请指教。
由Android开发中的点击事件的观察者模式理解RxJava的观察者模式
点击事件
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
//被观察者 相当于点击时间中的 View
Observable<String> observable = Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(@NonNull ObservableEmitter<String> e) throws Exception {
//这一部分应该类似 调用的 onClick(View v) v的传递 应该在view源码中有这样的接口回调
e.onNext("1");
e.onNext("2");
e.onComplete();
}
});
//观察者 相当于点击事件中的监听 setOnClickListener(this) 中的this(new OnClickListener())
//其中 String为传递的参数类型 类似 onClick(View v) 中的view
Observer<String> obsetver = new Observer<String>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
//这个方法是在订阅后发送数据之前执行的 (这个暂时不知道有什么使用场景)
//Disposable用于取消订阅 关于Disposable d 的使用方法
//设置一个全局的Disposable d ,然后
disposable = d;
//在不使用的时候取消订阅(比如在Activity的onDestory()等) if(disposable!=null && disposable.isDisposed()) disposable.dispose();
//不知道我这样理解Disposable d 的使用方法对不对 还请指教
LogUtils.w("obsetver", "onSubscribe");
}
@Override
public void onNext(@NonNull String s) {
LogUtils.w("obsetver", "onNext");
}
@Override
public void onError(@NonNull Throwable e) {
}
@Override
public void onComplete() {
}
};
//订阅 也就是view.setOnClickListener()设置监听
observable.subscribe(obsetver);