RxJava也火了好久了,网上介绍的博文也很多,在此谨记录自己学习的一些理解和心得,可能有些地方说的不一定对的。谨此记录而已。
先附上友链给 Android 开发者的 RxJava 详解、大头鬼.
再次声明。博文谨代表我个人的理解,若误认子弟,概不负责。当然,也不一定有多少人会看到我这篇博文了,还是在此自恋一下。
RxJava采用的是观察者模式,同时面向接口编程,利用回调实现了被观察变化后观察者能立刻做出反应,而不用观察者一直注意在被观察者的身上。最近越来越喜欢接口这个东西了,真是感觉用接口写出的代码,自己都觉得自己帅呆了。~。
今天刚开始学习RxJava,首先学习了Rx最基本的几个知识点,记录如下:
Obserable(被观察者) 、Subsciber(观察者) ,当被观察者有什么风吹草动观察者都会受到消息从而采取可以采取措施。编码层面代码具体怎么写呢。
1.生成一个被观察者
方式一:
rx.Observable<String> observable = rx.Observable.create(new rx.Observable.OnSubscribe<String>() {
@Override
public void call(Subscriber<? super String> subscriber) {
subscriber.onNext("hello world");
}
});
方式二:
rx.Observable<String> observable1= rx.Observable.just("hello world");
这两种方式在此处效果是等价的。但注意just方法里面传参数生成的Observable和def方式使用的Observable的不同,具体看下篇博文。
2.生成一个观察者:
rx.Subscriber<String> subscriber1 = new Subscriber<String>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(String s) {
Log.v("TAG", s);
}
};
3.将两者结为百年之好。
observable.subscribe(subscriber1);
运行一下,你就会获得"hello world"的打印。
或者被观察者只被一种观察一种行为也可以,subscribe也提供了其他形参种类的方法,比如还是使用上面的被观察者,但现在只监听它的onNext行为。如下:
Action1<String> mOnNextAction = new Action1<String>() {
@Override
public void call(String s) {
Log.v("TAG", s);
}
};
observable1.subscribe(mOnNextAction);
这样运行的结果也是一样的。同样subscribe方法还提供了一个分别对应onNext,onCompleted和onError这3个Action的重载,对应顺序是否正确,已忘,不敢保证。
最后别忘记将被观察者解绑。
if (subscriber.isUnsubscribed()){
subscriber.unsubscribe();
}
ok,今天先写到这里,后面笔记继续随着学习而增加,睡觉觉啦,呼啦啦~
网友评论