Huy Tower
Huy Tower

Reputation: 7966

how to call onComplete() used with interval() in rxjava

I'm new with rxjava.

implementation "io.reactivex.rxjava2:rxjava:2.2.8"
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'

I'm working with interval(),

I don't know how to show View in onComplete() of rxjava without block UI Thread.

Or call onComplete() from onNext() in below codes :

Observable
                    .interval(0, 5, TimeUnit.SECONDS)
                    .subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(aLong -> {
                        Log.d("", "onNext()");
                    }, Throwable::printStackTrace, () -> {
                        Log.d("", "onComplete()");

                        Log.d("", "SHOW POP UP");

                        showView();
                    });

People who know,

Please tell me,

Thank you,

Upvotes: 0

Views: 281

Answers (1)

shafayat hossain
shafayat hossain

Reputation: 1129

Following code may work.

 Observable
            .interval(0, 5, TimeUnit.SECONDS)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Observer<Long>() {
                
                Disposable d;
                
                @Override
                public void onSubscribe(@NonNull Disposable d) {
                    this.d = d;
                }

                @Override
                public void onNext(@NonNull Long aLong) {
                    if(!d.isDisposed()) {
                        this.onComplete(); // this will call onComplete()
                        d.dispose();
                    }
                }

                @Override
                public void onError(@NonNull Throwable e) {

                }

                @Override
                public void onComplete() {
                    showView();
                }
            });

Upvotes: 1

Related Questions