bservable.create(new Observable.OnSubscribe<String>() {
2 @Override
3 public void call(Subscriber<? super String> subscriber) {
4 Log.d(TAG, "Thread id of sending message is " + getCurrentThreadId());
5 subscriber.onNext("hello");
6 }
7 })
8 .subscribeOn(Schedulers.io())
9 .observeOn(AndroidSchedulers.mainThread())
10 .subscribe(new Action1<String>() {
11 @Override
12 public void call(String s) {
13 Log.d(TAG, "Thread id of receiving message is " + getCurrentThreadId());
14 }
15 });
这个时候Log如下所示:
可以看到,现在两个操作已经处于不同线程了。
如果有看我的上一篇文章,文章中需要进行高斯模糊的计算,这个计算过程可能会需要一点时间,如果不想让界面卡顿是建议开启新的线程进行的,而这里正好可以用到调度器的Computation,是不是很方便呢。
参考文章:
- ReactiveX/RxJava文档中文版
- 给Android开发者的RxJava详解
|