rxJava需要的依赖:
compile 'io.reactivex:rxjava:1.1.6'
compile 'io.reactivex:rxandroid:1.2.1'
public class MainActivity2 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity2_main);
Observable.just(1, 2, 3)
.map(new Func1<Integer, String>() {
@Override
public String call(Integer integer) {
return integer + "map1";//由于下面的subscribeOn(Schedulers.io()),所以这个方法是在异步里面执行
}
})
.subscribeOn(Schedulers.io())
.map(new Func1<String, String>() {
@Override
public String call(String s) {
return s + "map2";//由于没有进行切换线程,所以还是在异步里面执行
}
})
.observeOn(AndroidSchedulers.mainThread())
.map(new Func1<String, String>() {
@Override
public String call(String s) {
return s + "map3";//由于上面的observeOn(AndroidSchedulers.mainThread()),所以这个方法在主线程里面执行
}
})
.observeOn(Schedulers.io())
.map(new Func1<String, String>() {
@Override
public String call(String s) {
return s + "map4";//由于上面的observeOn(Schedulers.io()),所以这个方法在异步里面执行
}
})
.observeOn(AndroidSchedulers.mainThread())
.map(new Func1<String, String>() {
@Override
public String call(String s) {
return s + "map5";//由于上面的observeOn(AndroidSchedulers.mainThread()),所以这个方法在主线程里面执行
}
})
.subscribeOn(Schedulers.io())//这个由于是在obServeOn后面的操作,算无效
.map(new Func1<String, String>() {
@Override
public String call(String s) {
/**
* 由于上面的subscribeOn(Schedulers.io())是在observeOn(AndroidSchedulers.mainThread())后面执行
* ,相当于冲突一样,并且observeOn后面括号里面的线程决定改行下面的操作在指定的线程里面执行,而subscr
* ibceOn括号里面的线程是指示该行上面的代码在指定的线程里面执行,如果subscribeOn在observeOn的后面执行
* 那么就无效,所以不建议这样写
*/
return s+"map6";
}
})
.subscribe(new Subscriber<String>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(String s) {
}
});
}
}
compile 'io.reactivex:rxjava:1.1.6'
compile 'io.reactivex:rxandroid:1.2.1'
public class MainActivity2 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity2_main);
Observable.just(1, 2, 3)
.map(new Func1<Integer, String>() {
@Override
public String call(Integer integer) {
return integer + "map1";//由于下面的subscribeOn(Schedulers.io()),所以这个方法是在异步里面执行
}
})
.subscribeOn(Schedulers.io())
.map(new Func1<String, String>() {
@Override
public String call(String s) {
return s + "map2";//由于没有进行切换线程,所以还是在异步里面执行
}
})
.observeOn(AndroidSchedulers.mainThread())
.map(new Func1<String, String>() {
@Override
public String call(String s) {
return s + "map3";//由于上面的observeOn(AndroidSchedulers.mainThread()),所以这个方法在主线程里面执行
}
})
.observeOn(Schedulers.io())
.map(new Func1<String, String>() {
@Override
public String call(String s) {
return s + "map4";//由于上面的observeOn(Schedulers.io()),所以这个方法在异步里面执行
}
})
.observeOn(AndroidSchedulers.mainThread())
.map(new Func1<String, String>() {
@Override
public String call(String s) {
return s + "map5";//由于上面的observeOn(AndroidSchedulers.mainThread()),所以这个方法在主线程里面执行
}
})
.subscribeOn(Schedulers.io())//这个由于是在obServeOn后面的操作,算无效
.map(new Func1<String, String>() {
@Override
public String call(String s) {
/**
* 由于上面的subscribeOn(Schedulers.io())是在observeOn(AndroidSchedulers.mainThread())后面执行
* ,相当于冲突一样,并且observeOn后面括号里面的线程决定改行下面的操作在指定的线程里面执行,而subscr
* ibceOn括号里面的线程是指示该行上面的代码在指定的线程里面执行,如果subscribeOn在observeOn的后面执行
* 那么就无效,所以不建议这样写
*/
return s+"map6";
}
})
.subscribe(new Subscriber<String>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(String s) {
}
});
}
}