RxAndroid线程调度器: 用于线程的控制,做线程间的通讯
* subscribeOn 可执行多次, 切换操作符的线程- Schedulers.immediate() 默认线程- Schedulers.newThread() 每次都创建新的线程执行- Schedulers.io() 包含线程池的机制, 线程个数无限, 可以复用空闲线程(常用)- Schedulers.computation() CPU密集计算线程, 线程池线程数和CPU数一致.处理图形运算- AndroidSchedulers.mainThread() Android更新界面的UI主线程(常用)
* 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")//加载的是字符串,转换为Bitmp对象
.map(new Func1<String, Bitmap>() {@Overridepublic Bitmap call(String s) {//打印线程所在名称
String Threadname = Thread.currentThread().getName();System.out.println("Func1的call所在线程名称 : " + Threadname);Bitmap bitmap = BitmapFactory.decodeFile(s);return bitmap;}})//该方法决定了Func1的call方法(被观察者执行逻辑)运行在哪个线程
// IO:线程名称RxIoScheduler-2(子线程,内部用到了一个线程池)
.subscribeOn(Schedulers.io()).subscribeOn(Schedulers.io())//可以执行多次,对不同数据,在不同的线程中调用
//该方法决定了 Action1的call方法(观察者执行逻辑)运行在哪个线程 mainThread:主线程
.observeOn(AndroidSchedulers.mainThread())//只能执行一次,多次调用,以第一次为基准
.subscribe(new Action1<Bitmap>() {@Overridepublic void call(Bitmap bitmap) {//打印线程所在名称
String Threadname = Thread.currentThread().getName();System.out.println("Action1的call所在线程名称 : " + Threadname);ImageView.setImageBitmap(bitmap);}});