RxAndroid线程调度器: 用于线程的控制,做线程间的通讯
- Schedulers.immediate() 默认线程
- Schedulers.newThread() 每次都创建新的线程执行
- Schedulers.io() 包含线程池的机制, 线程个数无限, 可以复用空闲线程(常用)
- Schedulers.computation() CPU密集计算线程, 线程池线程数和CPU数一致.处理图形运算
- AndroidSchedulers.mainThread() Android更新界面的UI主线程(常用)
* subscribeOn 可执行多次, 切换操作符的线程
* observeOn 只需要执行一次, 指定订阅者执行的线程
//注意:这里用到了SD卡,记得加一下权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
Observable.just(Environment.getExternalStorageDirectory().getAbsolutePath() +
"/shuaige.jpg")
.map(new Func1<String, Bitmap>() {
public Bitmap call(String s) {
String Threadname = Thread.currentThread().getName();
System.out.println("Func1的call所在线程名称 : "
+ Threadname);
Bitmap bitmap = BitmapFactory.decodeFile(s);
//该方法决定了Func1的call方法(被观察者执行逻辑)运行在哪个线程
// IO:线程名称RxIoScheduler-2(子线程,内部用到了一个线程池)
.subscribeOn(Schedulers.io())
.subscribeOn(Schedulers.io())//可以执行多次,对不同数据,在不同的线程中调用
//该方法决定了 Action1的call方法(观察者执行逻辑)运行在哪个线程
mainThread:主线程
.observeOn(AndroidSchedulers.mainThread())//只能执行一次,多次调用,以第一次为基准
.subscribe(new Action1<Bitmap>() {
public void call(Bitmap bitmap) {
String Threadname = Thread.currentThread().getName();
System.out.println("Action1的call所在线程名称 : "
+ Threadname);
ImageView.setImageBitmap(bitmap);