RxJava create Operators – Operators for Creating Observables – RxJava Tutorial #4

Vamsi Tallapudi Android, Kotlin, RxJava Leave a Comment

In this article we will discuss about various RxJava create operators in depth with examples. Here we will discuss how to create Observables using various operators like Create, From, Just, Differ, etc.

This article is part of RxJava Intro series. You can checkout the entire series here:

Let us explore these RxJava create operators one by one.

RxJava Create Operators

Create

Create operator helps creating an Observable from scratch by calling observer methods programmatically. It creates only one Observable for all Observers.

rxjava create operator

rxjava create operator block diagram

We have already seen an example on how to create an Observable using Create Operator. Let us re-collect the same by creating one more Observable.

In the above example, you can identify that in Line 48, we created an Observable using Create Operator. If we dive into RxJava documentation link for create() we observe that it does not take any values. Hence we declared the values as list and iterated through them using onNext() function in line 49 – 50.

Here is the output:

Defer

Defer differs from create in a way that Defer does not create an Observable unless and until an Observer is subscribed to it. It waits until an Observer subscribes and generate a Fresh Observable with fresh data. So even though the Observer thinks it is subscribing to Same Observable, it gets a Fresh Observable.

Advantages

As this Operator waits till last minute to create new Observable, this ensures that the Observable always contains fresh Data. So this Operator is mostly used when intended to fetch freshest Data

Example

Here, I’ve created an Observable using Defer Operator as shown in the below example.

In the above example, we created a TestClass by initializing a variable named str to “Hello”. I’ve taken two types of observable – one is with Just operator and other is with Defer operator.

In line 24, I’ve modified the str value to “World”. In lines 25, 30 we subscribed to both observables. Now If we see the logcat, the output is printed as follows:

defer output

We can clearly see that Defer operator is fetching the latest data by creating a fresh Observable.

From

From operator is used to transform objects like lists, arrays, futures etc into Observables.

rxjava create operators

from operator illustration

There are different methods for transforming different objects like fromArray(), fromCallable(), fromFuture(), fromIterable(), fromPublisher(). More info is provided at the RxJava Wiki Link.

Example

Here I will consider an example using fromIterable where I will be converting arraylist into Observables.

In Line 22, I’ve transformed the numList to Observable.

Output:

Interval

This operator creates an Observable that emits a sequence of Integers with a given particular interval of time.

rxjava create operators

Interal operator illustration

Example

Below is the example where I used Interval Operator to create Observable and print Integer starting from 0.

In line 20, I created a clock Observable using Interval Operator and given it an interval of 1 second. Now the output for this above will be as follows:

This will print until the activity is destroyed as we are disposing disposable. Be careful that if we don’t dispose the disposable, it will continue to printing the values even if we exit the activity.

Just

Just Operator converts an item into an Observable that emits that item. Here whatever we pass in as arguments, it is converted to an Observable and will be emitted. The max arguments that can be passed in Just Operator are 1 to 10 (so min of 1 argument and max of 10).

Example

Here is the first example of creation of Observable using Just Operator where I passed the numbers 1, 2, 3, 4 directly as arguments.

The Output for the above is :

We can also pass List as a parameter.

The output will be as follows:

Range

Range Operator creates an Observable that emits a particular range of Integers. It takes 2 arguments – starting integer n and length m, so that it starts emitting integers from the starting integer n to n+m-1.

rxjava operators range

Example

Here is the example where we created an Observable using Range Operator.

The output of the above example is:

Repeat

Repeat Operator is a simple operator which emits the same item multiple times

Example

Let us see its implementation with example.

The output for the above is:

Timer

Timer operator creates an Observable that emits a particular item after a given delay.

timer operator

Example

Here is the example of timer operator:

The output for the above is :

This completes our tutorial on RxJava create Operators which we use to create Observables. In the next tutorial, we will focus on RxJava’s Operators for Transforming Observables along with examples.

All the code for the above examples can be found in the following Github link. Hope this article is useful to you. Make sure you subscribe for the mail to notify about the latest articles first. Let me know if any queries through comment section.

Related Posts