Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private io.reactivex.Single<String> getMyTask() {
- return io.reactivex.Single.fromCallable(new Callable<String>() {
- @Override
- public String call() throws Exception {
- Log.d("ERSEN","Task Started!");
- Random random = new Random(System.currentTimeMillis());
- if(random.nextBoolean()){
- return "WORK COMPLETED";
- }
- Log.d("ERSEN","Task Had An Error!");
- throw new IllegalArgumentException();
- }
- });
- }
- compositeDisposable.add(getMyTask()
- .repeatWhen(new Function<Flowable<Object>, Publisher<?>>() {
- @Override
- public Publisher<?> apply(final Flowable<Object> objectFlowable) throws Exception {
- return objectFlowable.delay(INTERVAL, TimeUnit.SECONDS);
- }
- })
- .retryWhen(throwableFlowable -> throwableFlowable.flatMap(new Function<Throwable, Publisher<?>>() {
- @Override
- public Publisher<?> apply(Throwable throwable) throws Exception {
- if (throwable instanceof ClassCastException) {
- return Flowable.error(throwable);
- }
- return throwableFlowable.delay(INTERVAL, TimeUnit.SECONDS);
- }
- }))
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(this::onSuccess, this::onError));
- This processor allows only a single Subscriber
Add Comment
Please, Sign In to add comment