As Retrofit docs represent Call enqueue method in Retrofit is :
Asynchronously send the request and notify callback of its response or if an error occurred talking to the server, creating the request, or processing the response.
and Rxjava according to this tutorial is :
RxJava and RxAndroid libraries allow us to easily do async processing using principles of functional reactive programming
it seems these two have the same approach. What is advantages and disadvantages of each? Which one is better to use?
Rx gives you a very granular control over which threads will be used to perform work in various points within a stream. To point the contrast here already, basic call approach used in Retrofit is only scheduling work on its worker threads and forwarding the result back into the calling thread.
enqueue(Callback<T> callback) Asynchronously send the request and notify callback of its response or if an error occurred talking to the server, creating the request, or processing the response. Response<T> execute() Synchronously send the request and return its response.
I won't say they have the same approach. Retrofit
is specifically designed for API calls which Synchronously or Asynchronously calls an API for you (you can specify that). while RxJava
& RxAndroid
can do the similar for you (i.e doing some tasks in sync or async), it is not limited to API call only. You can do many wonders with RxJava/Android
As you have quoted that
RxJava
andRxAndroid
libraries allow us to easily do async processing using principles of functional reactive programming
RxJava
& RxAndroid
does that with principles of Functional Reactive Programming(FRP). FRP has nothing to do with Retrofit
& hence they are not same & can't be compared.
You can also use RxJava/Android
with Retrofit for calling API in FRP Pattern.
Please read this so you can get more idea about FRP:
You should read this as well for understanding what operators does RxJava
gives & how you could use them
In the end, if by Asynchronous
you only meant API calls, then Retrofit
is better doing that as it's specially designed for that and if by Asynchronous
you meant some other tasks like resource intensive or so, then obviously RxJava/Android
will be better if you want async task in FRP pattern like Observer
or Observable
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With