Thanks for the words of encouragement josenaves. I usually avoid this topic of Rx. Mostly because people get very upset with what I have to say.
Disclaimer: I don’t feel that I am in anyway qualified to give this opinion, or anyone that you should listen to on this matter. Only you, can make this call for your projects. That said.
I'm a very, “right tool for the right job” kind of person, to me, RxAndroid is a tool, not a framework. Frankly, most android apps are at their heart, CRUD apps, I don’t think they need reactive programming. Add to that the fact that you have to use a large 3rd party library and a third party plugin to make everything work (which are still immature IMHO), there better be a damn good reason other than asynchronous processing to use it.
Reactive works well when you have an application that will benefit from turning data or events into streams and optionally manipulate data in those streams. Frankly, I find it hard to come up with examples where I feel the overhead of RxAndroid as a framework justifies its inclusion. The overheads being:
- Learning curve for you and anyone who comes after you.
- Finding resources in market who already know how to use it.
- Hacks around any issues or limitations that may exist.
- Finding help on RxJava and RxAndroid.
- Maintaining the library, the trouble is that with new iterations, such frameworks can change a lot, and you may find yourself stuck on an old unsupported version.
If your reason for using it is that it makes everything async and so it makes it easier to write performant apps and code, then that’s not good enough IMHO.
There are a few areas I will use it, for example, fetching locations of interest and plotting them on a map (this may require a lot of data processing depending on what you’re doing). Updating stock positions was an other such example I found. Any place you may need to poll for data may be an other example. Every apps is different, and you, yourself can judge if turning your data or events into a asynchronous stream is best for your app. Personally, I use it as a tool, not a framework.