您的位置:首页 > 编程语言 > Java开发

RxJava常用功能

2016-06-02 10:00 393 查看

精彩推荐:给 Android 开发者的 RxJava 详解

//RxJava 有2个最基本概念:Observable (可观察者,即被观察者)、 Observer (观察者)


1.创建Observable对象

Observable<String> myObservable = Observable.create(new Observable.OnSubscribe<String>() {
@Override
public void call(Subscriber<? super String> subscriber) {

}
});


2.简洁代码创建Observable对象

Observable<String> myObservable2 = Observable.just("Hello, world!");


3.单事件处理

Action1<String> onNextAction = new Action1<String>() {
@Override
public void call(String s) {
System.out.println(s);
}
};

myObservable2.subscribe(onNextAction);


3.单事件处理(简洁)

Observable.just("").subscribe(new Action1<String>() {
@Override
public void call(String s) {

}
});


4.map操作符,把一个事件转化成另一个事件

Observable.just("").map(new Func1<String, Integer>() {
@Override
public Integer call(String s) {
return s.hashCode();
}
}).subscribe(new Action1<Integer>() {
@Override
public void call(Integer integer) {

}
});


5.from接收一个集合作为输入,然后每次输出一个元素给subscriber

Observable<List<String>> query(String text);


final String[] urls = new String[]{"1", "2", "3"};

//本来要这么写
query("").subscribe(new Action1<List<String>>() {
@Override
public void call(List<String> strings) {
for (String url : urls) {
Log.v("-->", url);
}
}
});

//现在这么写
query("").subscribe(new Action1<List<String>>() {
@Override
public void call(List<String> strings) {
Observable.from(urls).subscribe(new Action1<String>() {
@Override
public void call(String s) {
Log.v("-->", s);
}
});
}
});


6.flatMap实现一对多的转化

Student[] students = ...;
Subscriber<Course> subscriber = new Subscriber<Course>() {
@Override
public void onNext(Course course) {
Log.d(tag, course.getName());
}
...
};
Observable.from(students)
.flatMap(new Func1<Student, Observable<Course>>() {
@Override
public Observable<Course> call(Student student) {
return Observable.from(student.getCourses());
}
})
.subscribe(subscriber);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: