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

Download Microservices for Java Developers: A hands-on introduction to frameworks and containers. Brought to you in partnership with Red Hat.

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 Timo Tuominen 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.


Download Building Reactive Microservices in Java: Asynchronous and Event-Based Application Design. Brought to you in partnership with Red Hat

Topics:

Opinions expressed by DZone contributors are their own.

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

{{ parent.tldr }}

{{ parent.urlSource.name }}