RxJava - Using Observable



The Observable class represents 0..N flows, but no back-pressure.

Class Declaration

Following is the declaration for io.reactivex.rxjava3.core.Observable<T> class −

public abstract class Observable<T>
   extends Object
      implements ObservableSource<T>

Protocol

Following is the sequential protocol that Observable operates −

onSubscribe onNext* (onError | OnComplete)?

Example - Creating a Observable Class to get Data

ObservableTester.java

package com.tutorialspoint;

import io.reactivex.rxjava3.core.Observable;

public class ObservableTester {
   public static void main(String[] args) throws InterruptedException {
      Observable.just("Hello world").subscribe(System.out::println);.
   }
}

Output

Compile and Run the code to verify the following output −

Hello World

Example - Usage of Observable Class to get Data after a delay of 2 seconds

ObservableTester.java

package com.tutorialspoint;

import java.util.concurrent.TimeUnit;

import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.observers.DisposableObserver;
import io.reactivex.rxjava3.schedulers.Schedulers;

public class ObservableTester  {
   public static void main(String[] args)  throws InterruptedException {
      //Create the observable
      Observable<String> testObservable = Observable.just("Hello World");

      //Create an observer
      Disposable disposable = testObservable
         .delay(2, TimeUnit.SECONDS, Schedulers.io())
         .subscribeWith(
            new DisposableObserver<String>() {
               @Override 
               public void onStart() {
                  System.out.println("Start!");
               }
               @Override 
               public void onNext(String t) {
                  System.out.println(t);
               }
               @Override
               public void onError(Throwable t) {
                  t.printStackTrace();
               }
               @Override 
               public void onComplete() {
                  System.out.println("Done!");
               }
            }); 
      Thread.sleep(3000);
      //start observing
      disposable.dispose();
   }
}

Output

Compile and Run the code to verify the following output −

Start!
Hello World
Done!
Advertisements