Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

7 Tips for Using RxJava on Android

DZone's Guide to

7 Tips for Using RxJava on Android

· Java Zone ·
Free Resource

FlexNet Code Aware, a free scan tool for developers. Scan Java, NuGet, and NPM packages for open source security and open source license compliance issues.

It's pretty clear that some people are very fond of RxJava, but that's not to say there are no hurdles to overcome. This recent post from at the Futurice blog explores Tuominen's first foray into RxJava, and while his opinion is clearly favorable, he suggests that there was a fairly substantial learning curve. Referring to the initial project, which he worked on last year, Tuominen says:

We made the bold decision to build the entire Android architecture in RxJava. Little did we know at that time, though, just how deep the dive would be. After a few initial encouraging experiments we were surrounded by eerie problems and sleepless nights.

In turn, Tuominen has come up with seven tips for using RxJava on Android. The tips cover a lot of ground, covering the following topics:

  1. Synchronous RxJava
  2. Hot and cold subscriptions
  3. Using subjects
  4. Monitoring your thread
  5. Studying RxJava
  6. Observer vs. action
  7. Memory leaks in subscriptions

Ultimately, though, Tuominen is happy with RxJava. It's just a matter of getting started. According to Tuominen:

...there was no desire to turn back. It was clear the reactive way was the right way and anything else would have felt but an ugly compromise. That is, in fact, the funny thing about reactive — no matter how hard it is in the beginning, it always feels it is worth it.

Check out the full article to learn what you need to know to use RxJava on Android.


 Scan Java, NuGet, and NPM packages for open source security and license compliance issues. 

Topics:

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}