Guest User

Untitled

a guest
Mar 24th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.63 KB | None | 0 0
  1. private io.reactivex.Single<String> getMyTask() {
  2. return io.reactivex.Single.fromCallable(new Callable<String>() {
  3. @Override
  4. public String call() throws Exception {
  5. Log.d("ERSEN","Task Started!");
  6. Random random = new Random(System.currentTimeMillis());
  7.  
  8. if(random.nextBoolean()){
  9. return "WORK COMPLETED";
  10. }
  11. Log.d("ERSEN","Task Had An Error!");
  12. throw new IllegalArgumentException();
  13. }
  14. });
  15. }
  16.  
  17. compositeDisposable.add(getMyTask()
  18. .repeatWhen(new Function<Flowable<Object>, Publisher<?>>() {
  19. @Override
  20. public Publisher<?> apply(final Flowable<Object> objectFlowable) throws Exception {
  21. return objectFlowable.delay(INTERVAL, TimeUnit.SECONDS);
  22. }
  23. })
  24. .retryWhen(throwableFlowable -> throwableFlowable.flatMap(new Function<Throwable, Publisher<?>>() {
  25. @Override
  26. public Publisher<?> apply(Throwable throwable) throws Exception {
  27. if (throwable instanceof ClassCastException) {
  28. return Flowable.error(throwable);
  29. }
  30. return throwableFlowable.delay(INTERVAL, TimeUnit.SECONDS);
  31. }
  32. }))
  33. .subscribeOn(Schedulers.io())
  34. .observeOn(AndroidSchedulers.mainThread())
  35. .subscribe(this::onSuccess, this::onError));
  36.  
  37. This processor allows only a single Subscriber
Add Comment
Please, Sign In to add comment