接触到这个东西也就是这两天的东西,一个只会定义一个button然后注册点击事件的人看到这些RxJAVA/OkHttp/GreenDao这些东西,内心是崩溃的。
关于Rx的什么原理啊,好处啊,也有很多文章写得我一脸蒙蔽,完全看不懂
这里推荐一位大大写的入门文章《给 Android 开发者的 RxJava 详解》
话不多说,自我总结开始
环境依赖
版本号可能有差异,可以搜索关键字添加而不用gradle编译
compile 'io.reactivex:rxjava:1.1.9'
compile 'io.reactivex:rxandroid:1.2.1'
几个关键字
Rx也是一种观察者模式的框架,(什么是观察者?这个我解释不清楚)
基本的概念有:
Observable 被观察者
Subscriber 观察者
subscribe 订阅(该行为把观察者和被观察者产生关联行为)
基本写法
每个写法的思想翻译都是:定义被观察者Observable的行为=>定义观察者Subscriber 根据被观察者的行为而应该产生的行为=>通过订阅subscribe关联二者。
举个简单的例子:
邮局:被观察者(Observable) 行为是”发布书籍”
读者:观察者(Subscriber ) 行为是”拿到书籍阅读”
订书:订阅(subscribe) 让”邮局”发布书籍给”读者”这个关系成立
下面演示一下产生订阅行为的这个完整过程
create的基本写法
rx.Observable observable= rx.Observable.create(new rx.Observable.OnSubscribe<Object>() {
@Override
public void call(Subscriber<? super Object> subscriber) {
subscriber.onNext("邮局发布书籍了");
}
});
Subscriber subscriber=new Subscriber() {
@Override
public void onCompleted() {
//
}
@Override
public void onError(Throwable e) {
//
}
@Override
public void onNext(Object o) {
Log.i(TAG, o.toString());
}
};
observable.subscribe(subscriber);
create的流式写法
和基本写法一个意思,只不过用流接口的形式,看起来更舒服
rx.Observable.create(new rx.Observable.OnSubscribe<Object>() {
@Override
public void call(Subscriber<? super Object> subscriber) {
subscriber.onNext("邮局发布书籍了");
}
}).subscribe(new Subscriber<Object>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Object o) {
Log.i(TAG, o.toString());
}
});
处理数组或者批量数据的快捷写法
比如我喜欢重要的事情说三次
just把传入的参数分别做一次onNext
from把传入的数组拆分成对象之后分别做一次onNext
rx.Observable.just("邮局发布书籍啦","邮局发布书籍啦","邮局发布书籍啦")
.subscribe(new Subscriber<String>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(String s) {
Log.i(TAG, s);
}
});
rx.Observable.from(new String[]{"邮局发布书籍啦","邮局发布书籍啦","邮局发布书籍啦"})
.subscribe(new Subscriber<String>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(String s) {
Log.i(TAG, s);
}
});
结尾
第一次写博客,因为是初学者,也没什么干货,做的准备也不充分,也不知道有没有错,权当是自我笔记
其实关于rx的基础,还有很多的
比如还有最基本的observeOn和subscribeOn
随着自己的学习来一点点总结吧
以上