美文网首页Android技术知识Android开发Android开发
「开源框架」RxJava(2)线程控制

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

作者: dongbingliu | 来源:发表于2018-08-08 11:05 被阅读20次
    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<String>() {
            @Override
            public void subscribe(ObservableEmitter<String> emitter) throws Exception {
               
                emitter.onNext("MrLiu");
                emitter.onNext("HelloWord");
                emitter.onComplete();
            }
        }).map(new Function<String, String>() {
            @Override
            public String apply(String string) throws Exception {
                return "Gospell" + string;
            }
        }).subscribeOn(Schedulers.newThread())//设置被观察在子线程工作
          .observeOn(AndroidSchedulers.mainThread())//设置观察者在主线程操作
          .doOnNext(new Consumer<String>() {
                @Override
                public void accept(String s) throws Exception {
                    Logger.d(s);
                }
        }).subscribe(new Observer<String>() {
            @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)线程控制

        本文链接:https://www.haomeiwen.com/subject/lhstbftx.html