「开源框架」RxJava(2)线程控制

RxJava

RxJava 异步任务操作,核心功能在于对线程的控制与调度,Android 编程中更新 UI 必须在主线程。线程调度关键字 subscribeOn()「设置被观察者线程」、observeOn()「设置观察者线程,默认参数observeOn(AndroidSchedulers.mainThread() )

RxJava 内置线程:

  • Schedulers.io() 代表io操作的线程, 通常用于网络,读写文件等io密集型的操作
  • AndroidSchedulers.mainThread() 代表Android的主线程
  • Schedulers.newThread() 代表一个常规的新线程
  • Schedulers.computation() 代表CPU计算密集型的操作, 例如需要大量计算的操作

伪代码参考

Observable.create(new ObservableOnSubscribe() {
        @Override
        public void subscribe(ObservableEmitter emitter) throws Exception {
           
            emitter.onNext("MrLiu");
            emitter.onNext("HelloWord");
            emitter.onComplete();
        }
    }).map(new Function() {
        @Override
        public String apply(String string) throws Exception {
            return "Gospell" + string;
        }
    }).subscribeOn(Schedulers.newThread())//设置被观察在子线程工作
      .observeOn(AndroidSchedulers.mainThread())//设置观察者在主线程操作
      .doOnNext(new Consumer() {
            @Override
            public void accept(String s) throws Exception {
                Logger.d(s);
            }
    }).subscribe(new Observer() {
        @Override
        public void onSubscribe(Disposable d) {
            Log.d(TAG, "onSubscribe: ");
        }

        @Override
        public void onNext(String string) {
            Logger.d(string);

        }

        @Override
        public void onError(Throwable e) {
            Log.d(TAG, "onError: ");
        }

        @Override
        public void onComplete() {
            Log.d(TAG, "onComplete: ");
        }
});

参考文章:
https://juejin.im/post/5848dd11b123db0066030123

你可能感兴趣的:(「开源框架」RxJava(2)线程控制)