代码片段:利用RxJava在后台执行耗时任务

3,123 阅读1分钟

1、添加依赖

    implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
    implementation 'io.reactivex.rxjava2:rxjava:2.2.1'

2、异步和链式编程写法

Observable.create(new ObservableOnSubscribe<Boolean>() {
            @Override
            public void subscribe(ObservableEmitter<Boolean> emitter) throws Exception {
                Log.d(TAG,"subscribe");
                boolean result = 耗时操作
                emitter.onNext(result);
                emitter.onComplete();
            }
        }).observeOn(AndroidSchedulers.mainThread()) //观察者所在线程,即后台任务执行完成后需要回调的线程
                .subscribeOn(Schedulers.io()) //被观察者所在的线程,在后台任务执行的线程
                .subscribe(new Observer<Boolean>() {
            @Override
            public void onSubscribe(Disposable d) {
                Log.d(TAG,"onSubscribe");
            }
            @Override
            public void onNext(Boolean result) {
                Log.d(TAG,"result = " + result);
            }

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

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