直接上代码!
- 定义三个方法
public int getInt(){return 1;}
public String getString(){return "wsl";}
public boolean getBoolean(){return true;}
2.开始
//观察一个方法
Observable.just(getInt(),getString(),getBoolean()).subscribe(new Observer<Serializable>() {
@Override
public void onCompleted() {
System.out.println("onCompleted-" + Thread.currentThread().getName());
}
@Override
public void onError(Throwable e) {
System.out.println("onError-" + Thread.currentThread().getName());
}
@Override
public void onNext(Serializable serializable) {
System.out.println(serializable.toString()+"-"+ Thread.currentThread().getName());
}
});
运行结果:
09-12 23:18:07.146 2218-2218/cn.xianzaishi.rxjava I/System.out: 1-main
09-12 23:18:07.146 2218-2218/cn.xianzaishi.rxjava I/System.out: wsl-main
09-12 23:18:07.146 2218-2218/cn.xianzaishi.rxjava I/System.out: true-main
09-12 23:18:07.146 2218-2218/cn.xianzaishi.rxjava I/System.out: onCompleted-main
分析: just方法里面写的是三个方法, onNext回调参数部分是Serializable ,而且从结果看得出都是运行在ui线程; 所以, just方法使用与观察某个或者某些方法的, 如果是多个方法, 则回调过来的是Serializable ,如果是一个方法的话, 这个参数类型就是那个方法的返回值类型;你可能会问, 如果被观察的方法没有返回值的话怎么办? just方法会报错;
3.如果just方法观察的是集合或数组呢?
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
Observable.just(list).subscribe(new Observer<ArrayList<Integer>>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(ArrayList<Integer> integers) {
//从这里可以看得出是把整个数组回调了,不想from和create是一个一个来;
}
});