Comparison of Android networking libraries: OkHTTP, Retrofit, and Volley [closed]
Asked Answered
N

10

597

Two-part question from an iOS developer learning Android, working on an Android project that will make a variety of requests from JSON to image to streaming download of audio and video:

  1. On iOS I have used the AFNetworking project extensively. Is there an equivalent library for Android?

  2. I've read up on OkHTTP and Retrofit by Square, as well as Volley but dont yet have experience developing with them. I'm hoping someone can provide some concrete examples of best use cases for each. From what I've read, seems like OkHTTP is the most robust of the three, and could handle the requirements of this project (mentioned above).

Nigel answered 3/6, 2013 at 17:47 Comment(3)
If you are using the internal implementation of HttpUrlConnection, you should consider that HttpUrlConnection uses silent retries on POST-requests. That caused a lot of damge to me. For more information read here: https://mcmap.net/q/14514/-android-java-httpurlconnection-silent-retry-on-39-read-39-timeoutBleak
if any one needs list of all networking libraries you can find it on my blog post androidredman.wordpress.com/2017/06/26/…Taitaichung
Volley can run of legacy Apache, HttpUrlConnection, Apache-4 or OkHttp. Where are Retrofit really only runs of OkHttp. Retrofit is a lot easier to configure.Boardinghouse
P
665

I'm hoping someone can provide some concrete examples of best use cases for each.

Use Retrofit if you are communicating with a Web service. Use the peer library Picasso if you are downloading images. Use OkHTTP if you need to do HTTP operations that lie outside of Retrofit/Picasso.

Volley roughly competes with Retrofit + Picasso. On the plus side, it is one library. On the minus side, it is one undocumented, an unsupported, "throw the code over the wall and do an I|O presentation on it" library.

EDIT - Volley is now officially supported by Google. Kindly refer Google Developer Guide

From what I've read, seems like OkHTTP is the most robust of the 3

Retrofit uses OkHTTP automatically if available. There is a Gist from Jake Wharton that connects Volley to OkHTTP.

and could handle the requirements of this project (mentioned above).

Probably you will use none of them for "streaming download of audio and video", by the conventional definition of "streaming". Instead, Android's media framework will handle those HTTP requests for you.

That being said, if you are going to attempt to do your own HTTP-based streaming, OkHTTP should handle that scenario; I don't recall how well Volley would handle that scenario. Neither Retrofit nor Picasso are designed for that.

Pearson answered 3/6, 2013 at 18:18 Comment(29)
Thanks @Pearson for the concise answer, and the note on the undocumented steez of Volley (got that impression, esp in comparison to the other projects). Definitely helps me get things off the ground.Nigel
Another great answer from @CommonsWare. Can someone follow up on how RoboSpice fits into all of this?Puentes
@Puentes github.com/octo-online/robospice if you are using volley for network calls then no need to use robospice!, volley does the many of the things that Robospice do for network calls,Robospice supports REST out of the box (using Spring Android or Google Http Client or Retrofit).if you want fast networking and imageloading with robust network client you can go for volley! but you can replace normal android async task you use Robospice for better performance and avoiding memory leaks!Root
@Root The Volley documentation is no longer available.Thrower
@Thrower not sure.. but have a look at it afzaln.com/volleyRoot
@Root Okay, JavaDocs at least .. but that is something I could generate on my own. I thought of something more extensive with examples and conceptional guidelines.Thrower
@Thrower This Projectile new lib minimizes the efforts of coding in Volley , also you can look at arnab.ch/blog for centralized place for your Queue system. you can use Volley Gsonhelperclass for gson parsing with type!Root
@Thrower go for retrofit which uses built in gson parsing support, and we can easily use Android service with retrofit by integrating retrofit with Robospice. (just have a look at my updated answer)Root
>Use OkHTTP if you need to do HTTP operations that lie outside of Retrofit/Picasso Picasso is not the only image loading library for Android. Depending on the usecase, Glide, Fresco or any other lib might be more adapted (very different kind of optimizations, different features, ...)Bobbery
So true! "throw the code over the wall and do an I|O presentation on it" library. :DPecuniary
I remember the night I had to step through volley in order to find out how it handled cache headers. Fun times. I understand the documentation issues @commonsware but I feel there's something more you have against it. Care to share? Really interested.Trashy
@frostymarvelous: I feel that undocumented and unsupported is more than enough justification. It's not like Google lacks a system for more formally handling stuff like this (e.g., Android Support Library). In the two years since this answer, on the plus side, there's some amount of community support, including some unofficial packaging of the code into an artifact.Pearson
I have some image upload to do, do you have some recommendations? Retrofit or ion (koushikdutta.com/ion), please share your valuable opinions if any.Bradlybradman
@Pearson What do you mean by "undocumented and unsupported". Aren't these links sufficient to some extent? Guide: developer.android.com/training/volley/index.html SourceCode: android.googlesource.com/platform/frameworks/volley/+/master/…Ripsaw
@AbhinavVutukuri: You are commenting on an answer from over two years ago. At that time, there was no documentation.Pearson
@Pearson I agree. But, I kindly request to update this answer as it will help other answer seekers (Also as it is most upvoted & accepted answer)Ripsaw
You should update your answer because Retrofit is best. Retrofit is now officially supported by Google. al-burraq.com/…Allotment
@NaeemIbrahim: "You should update your answer because Retrofit is best" -- you are welcome to your opinion. My answer neither endorses nor bashes Retrofit. "Retrofit is now officially supported by Google" -- you are welcome to provide some evidence of this. AFAIK, there is only one Web page in the documentation on Retrofit, and that is merely an example.Pearson
@ CommonsWare: For a video chat application with back-end as Laravel, which will be the best approach? Could you please mention the benefits of using Volley in this context?Ferule
@Michel: I know nothing about Laravel, and asking for specific product recommendations is considered to be off-topic for Stack Overflow. That being said, I never use Volley, outside of book examples.Pearson
@CommonsWare: It would be very helpful and would save a lot of time, if I could knew which will be the best way. If it violates the rules of StackOverflow, then could you please tell me the benefits of using Volley in case of a video chat application? Or what all things (specifically for my case) I need to consider in choosing among these?Ferule
@Michel: Most likely, you will use none of these and instead use something else (e.g., WebRTC) for the actual video. And, as I stated, I do not use Volley.Pearson
Can I use OkHttp for downloading videos from Youtube programmatically? Or the DownloadManager can do it alone? I never used OkHttp before.Prorogue
@RoCk: I have no experience with any YouTube Web service API, sorry.Pearson
@Pearson i am just asking for a small suggestion. As on this Glide vs Picasso page, it is mentioning that Glide is best for large apps and better memory management. Do you agree ?Johppah
@RahulKhurana: I have not spent any time trying to compare the two, sorry.Pearson
Is it suitable for you take a minute looking into the comparison page?Johppah
@RahulKhurana: Reading the page will not help me answer your question. The only way that I can answer your question is to write a large app that uses lots of memory, then try both Glide and Picasso in that app. From there, I can do both quantitative analysis of memory management plus provide my feedback on "best for large apps", which is subjective. I have not done this sort of comparison work, nor have I spent enough time with Glide to be able to just "wing it" based on what work that I have done. Sorry!Pearson
Could anyone elaborate on Ktor, the new kid on the block?Sampan
R
369

Looking at the Volley perspective here are some advantages for your requirement:

Volley, on one hand, is totally focused on handling individual, small HTTP requests. So if your HTTP request handling has some quirks, Volley probably has a hook for you. If, on the other hand, you have a quirk in your image handling, the only real hook you have is ImageCache. "It’s not nothing, but it’s not a lot!, either". but it has more other advantages like Once you define your requests, using them from within a fragment or activity is painless unlike parallel AsyncTasks

Pros and cons of Volley:

So what’s nice about Volley?

  • The networking part isn’t just for images. Volley is intended to be an integral part of your back end. For a fresh project based off of a simple REST service, this could be a big win.

  • NetworkImageView is more aggressive about request cleanup than Picasso, and more conservative in its GC usage patterns. NetworkImageView relies exclusively on strong memory references, and cleans up all request data as soon as a new request is made for an ImageView, or as soon as that ImageView moves offscreen.

  • Performance. This post won’t evaluate this claim, but they’ve clearly taken some care to be judicious in their memory usage patterns. Volley also makes an effort to batch callbacks to the main thread to reduce context switching.

  • Volley apparently has futures, too. Check out RequestFuture if you’re interested.

  • If you’re dealing with high-resolution compressed images, Volley is the only solution here that works well.

  • Volley can be used with Okhttp (New version of Okhttp supports NIO for better performance )

  • Volley plays nice with the Activity life cycle.

Problems With Volley:
Since Volley is new, few things are not supported yet, but it's fixed.

  1. Multipart Requests (Solution: https://github.com/vinaysshenoy/enhanced-volley)

  2. status code 201 is taken as an error, Status code from 200 to 207 are successful responses now.(Fixed: https://github.com/Vinayrraj/CustomVolley)

    Update: in latest release of Google volley, the 2XX Status codes bug is fixed now!Thanks to Ficus Kirkpatrick!

  3. it's less documented but many of the people are supporting volley in github, java like documentation can be found here. On android developer website, you may find guide for Transmitting Network Data Using Volley. And volley source code can be found at Google Git

  4. To solve/change Redirect Policy of Volley Framework use Volley with OkHTTP (CommonsWare mentioned above)

Also you can read this Comparing Volley's image loading with Picasso

Retrofit:

It's released by Square, This offers very easy to use REST API's (Update: Voila! with NIO support)

Pros of Retrofit:

  • Compared to Volley, Retrofit's REST API code is brief and provides excellent API documentation and has good support in communities! It is very easy to add into the projects.

  • We can use it with any serialization library, with error handling.

Update:

  • There are plenty of very good changes in Retrofit 2.0.0-beta2

  • version 1.6 of Retrofit with OkHttp 2.0 is now dependent on Okio to support java.io and java.nio which makes it much easier to access, store and process your data using ByteString and Buffer to do some clever things to save CPU and memory. (FYI: This reminds me of the Koush's OIN library with NIO support!) We can use Retrofit together with RxJava to combine and chain REST calls using rxObservables to avoid ugly callback chains (to avoid callback hell!!).

Cons of Retrofit for version 1.6:

  • Memory related error handling functionality is not good (in older versions of Retrofit/OkHttp) not sure if it's improved with the Okio with Java NIO support.

  • Minimum threading assistance can result call back hell if we use this in an improper way.

(All above Cons have been solved in the new version of Retrofit 2.0 beta)

========================================================================

Update:

Android Async vs Volley vs Retrofit performance benchmarks (milliseconds, lower value is better):

Library One Discussion Dashboard (7 requests) 25 Discussions
AsyncTask 941 ms 4,539 ms 13,957 ms
Volley 560 ms 2,202 ms 4,275 ms
Retrofit 312 ms 889 ms 1,059 ms

(FYI above Retrofit Benchmarks info will improve with java NIO support because the new version of OKhttp is dependent on NIO Okio library)

In all three tests with varying repeats (1 – 25 times), Volley was anywhere from 50% to 75% faster. Retrofit clocked in at an impressive 50% to 90% faster than the AsyncTasks, hitting the same endpoint the same number of times. On the Dashboard test suite, this translated into loading/parsing the data several seconds faster. That is a massive real-world difference. In order to make the tests fair, the times for AsyncTasks/Volley included the JSON parsing as Retrofit does it for you automatically.

RetroFit Wins in benchmark test!

In the end, we decided to go with Retrofit for our application. Not only is it ridiculously fast, but it meshes quite well with our existing architecture. We were able to make a parent Callback Interface that automatically performs error handling, caching, and pagination with little to no effort for our APIs. In order to merge in Retrofit, we had to rename our variables to make our models GSON compliant, write a few simple interfaces, delete functions from the old API, and modify our fragments to not use AsyncTasks. Now that we have a few fragments completely converted, it’s pretty painless. There were some growing pains and issues that we had to overcome, but overall it went smoothly. In the beginning, we ran into a few technical issues/bugs, but Square has a fantastic Google+ community that was able to help us through it.

When to use Volley?!

We can use Volley when we need to load images as well as consuming REST APIs!, network call queuing system is needed for many n/w request at the same time! also Volley has better memory related error handling than Retrofit!

OkHttp can be used with Volley, Retrofit uses OkHttp by default! It has SPDY support, connection pooling, disk caching, transparent compression! Recently, it has got some support of java NIO with Okio library.

Source, credit: volley-vs-retrofit by Mr. Josh Ruesch

Note: About streaming it depends on what type of streaming you want like RTSP/RTCP.

Root answered 18/9, 2013 at 3:33 Comment(13)
@Jan1337z +1 for the information! I have updated it!android.googlesource.com/platform/frameworks/volleyRoot
@Root it would be interesting to benchmark RoboSpice in your sample. We even offer a Retrofit module so I believe this would require very little changes. Is the source available somewhere ? The advantage of RS is that is handles properly the lifecycle of the activity that performs network requests, and we also provide transparent caching, I guess the overhead would be small compared to a pure retrofit request.Niggerhead
@Niggerhead I got this benchmark results by Josh Ruesch blog you can see the conversion's between Ficus Kirkpatrick (Volley founder), Josh Ruesch! He not yet shared benchmark test project anywhere! FYI I'm Just started learning your RoboSpice with retrofit sample facing this notification issue :)Root
@Root Please post on the mailing list or github if you can't solve the issue. RS is really mature, but we might still have a bug (although I really doubt that a simple app could go wrong).Niggerhead
I'm not quite sure I understand. Could someone provide examples of the cons to Retrofit: "Memory error handling is not good. Minimum threading assistance can result call back hell if we use this in a improper way."Hothouse
what about comparison to AndroidQuery networking effectiveness , what do u think about it?Braxy
@RubinBasha According to Android Hacker Koushik Dutta AQuery seems to lock up the UI thread... don't use itRoot
Can you send me the link of some useful examples of Retrofit. That can be run easily. for Get, Post, MultiPart Image Post.Arta
@UsmanAfzal github.com/swankjesse/android-http-examples/tree/master/… use retrofit documentation to change it to post,MultiPart etcRoot
Hi! About Multipart Requests with Volley, I think that we can use MultipartEntityBuilder in httpmime library with it.Fold
@ChungPham +1 May be it's new feature in latest version, I will look into that and update the answer !Root
files.evancharlton.com/volley-docs is broken.Evenings
Has anybody else verified these benchmarks? Since apache http library is deprecated in M (and I was using it for multipart builder), I decided to migrate my networking code to Retrofit. I initially changed one of the GET calls to get a bunch of objects from the server. I timed the Retrofit vs AsyncTask (with my own JSON parsing). The performance was very close, not a 3x improvement as shown in the "One Discussion" column of the table. Granted, the resulting code is much cleaner and I didn't have to write my own JSON parser, but for a single GET request the improvement wasn't there.Miamiami
N
43

RoboSpice Vs. Volley

From https://groups.google.com/forum/#!topic/robospice/QwVCfY_glOQ

  • RoboSpice(RS) is service based and more respectful of Android philosophy than Volley. Volley is thread based and this is not the way background processing should take place on Android. Ultimately, you can dig down both libs and find that they are quite similar, but our way to do background processing is more Android oriented, it allow us, for instance, to tell users that RS is actually doing something in background, which would be hard for volley (actually it doesn't at all).
  • RoboSpice and volley both offer nice features like prioritization, retry policies, request cancellation. But RS offers more : a more advanced caching and that's a big one, with cache management, request aggregation, more features like repluging to a pending request, dealing with cache expiry without relying on server headers, etc.
  • RoboSpice does more outside of UI Thread : volley will deserialize your POJOs on the main thread, which is horrible to my mind. With RS your app will be more responsive.
  • In terms of speed, we definitely need metrics. RS has gotten super fast now, but still we don't have figure to put here. Volley should theoretically be a bit faster, but RS is now massively parallel... who knows ?
  • RoboSpice offers a large compatibility range with extensions. You can use it with okhttp, retrofit, ormlite (beta), jackson, jackson2, gson, xml serializer, google http client, spring android... Quite a lot. Volley can be used with ok http and uses gson. that's it.
  • Volley offers more UI sugar that RS. Volley provides NetworkImageView, RS does provide a spicelist adapter. In terms of feature it's not so far, but I believe Volley is more advanced on this topic.
  • More than 200 bugs have been solved in RoboSpice since its initial release. It's pretty robust and used heavily in production. Volley is less mature but its user base should be growing fast (Google effect).
  • RoboSpice is available on maven central. Volley is hard to find ;)
Niggerhead answered 10/1, 2014 at 18:16 Comment(6)
Robospice uses android services for REST call, we can use Robospice with Retrofit to minimize the gson parsing efforts, in the same way we can use Volley(tread based) with Robospice? (not sure it's the right qsn to ask) I just searching for volley with service!Root
Volley with service is basically RS. Or, chronologically speaking, Volley is RS without service and few other features missing. And yes, you can use Retrofit with RS, and also even add okhttp if you like.Niggerhead
Why is volley hard to find? compile 'com.mcxiaoke.volley:library:1.0.+'Public
@Public there was a time when mcxiaoke's clone was not available. You had to manually include volley in your app.Trashy
"volley will deserialize your POJOs on the main thread". You can receive the returned JSON data and deserialize it yourself on a separate thread if this is an issue.Brandy
If you want speed use combination of retrofit and RS.. For anything else (favoritism, ease of use, docs, laziness...lol), use anyOverline
A
20

AFNetworking for Android:

Fast Android Networking is here

Fast Android Networking Library supports all types of HTTP/HTTPS request like GET, POST, DELETE, HEAD, PUT, PATCH

Fast Android Networking Library supports downloading any type of file

Fast Android Networking Library supports uploading any type of file (supports multipart upload)

Fast Android Networking Library supports cancelling a request

Fast Android Networking Library supports setting priority to any request (LOW, MEDIUM, HIGH, IMMEDIATE)

Fast Android Networking Library supports RxJava

As it uses OkHttp as a networking layer, it supports:

Fast Android Networking Library supports HTTP/2 support allows all requests to the same host to share a socket

Fast Android Networking Library uses connection pooling which reduces request latency (if HTTP/2 isn’t available)

Transparent GZIP shrinks download sizes

Fast Android Networking Library supports response caching which avoids the network completely for repeat requests

Thanks: The library is created by me

Avenue answered 16/7, 2016 at 15:39 Comment(4)
You state that your library supports HTTP/2, but you don't say if there is an API requirement for the HTTP/2 support. My understanding was that Android API level less than 5.0 didn't have the right SSL encryption methods to support HTTP/2. Not knocking, just trying to fully evaluate your proposed solution.Adipose
@AmitShekhar: I just wanted to know that which one is best for API calling in Android. I am using Android Networking Library, so which is great to implement Retrofit, Volley or Android Networking?Unmake
@Amit Shekhar How efficient is Fast Android Networking for multipart image upload, Especially when it comes to low internet scenarios?Poeticize
I found this post on Google looking for a comparison of HTTP client libraries in the year 2022, but although the Fast Android Networking Library (still) seems to be the clear winner, it's not maintained and hasn't been updated in a few years. I did find, however, KnHttp which is a DIRECT fork from Fast Android Networking Library, and is being updated/maintained.Unlucky
D
18

Async HTTP client loopj vs. Volley

The specifics of my project are small HTTP REST requests, every 1-5 minutes.

I using an async HTTP client (1.4.1) for a long time. The performance is better than using the vanilla Apache httpClient or an HTTP URL connection. Anyway, the new version of the library is not working for me: library inter exception cut chain of callbacks.

Reading all answers motivated me to try something new. I have chosen the Volley HTTP library.

After using it for some time, even without tests, I see clearly that the response time is down to 1.5x, 2x Volley.

Maybe Retrofit is better than an async HTTP client? I need to try it. But I'm sure that Volley is not for me.

Deltoid answered 6/6, 2014 at 8:7 Comment(6)
Any analysis about Retrofit Vs AsyncHttpClient ??? Please post if yes @SergeyAmplitude
instructure.github.io/blog/2013/12/09/volley-vs-retrofitCeruse
I'm using AsyncHttpClient for a few years. The bad part is that there is that the github repo is 2 years without a commit.Baluchi
Its not actual no more, async http is too old fashion. Consider to change to another library. Volley is also became very good choice.Deltoid
Sergey , @Amplitude i am still looking for reply of your question i am using AsyncHttpClient should i use something else like RxJava Retrofit or any thing else..Please let me know.. eagerly waiting for responseLilongwe
@DeepDave Hey don't think much Retrofit is best out of any library for now until kotlin bring coroutine.Amplitude
J
11

Just to add a bit to the discussion from my experience working with Volley:

  1. Volley does not handle streaming uploads or downloads in any sense. That is, the entire request body has to be in memory and you cannot use an OutputStream to write the request body to the underlying socket, nor can you use an InputStream to read the response body, as basic HttpURLConnection does. So, Volley is a poor choice for uploading or downloading large files. Your requests and responses should be small. This is one of the biggest limitations of Volley that I have personally encountered. For what it's worth, OkHttp does have interfaces for working with streams.

  2. The lack of official documentation is annoying, although I have been able to work around that by reading the source code, which is pretty easy to follow. What is more bothersome is that, as far as I can tell, Volley has no official release versions and no Maven or Gradle artifact, and therefore managing it as a dependency becomes more of a headache than, say, any of the libraries Square has released. You just clone a repo, build a jar, and you're on your own. Looking for a bug fix? Fetch and hope it's there. You might get some other stuff, too; it won't be documented. In my opinion, this effectively means that Volley is an unsupported 3rd party library, even though the code base is reasonably active. Caveat emptor.

  3. As a nit, having the Content-Type tied to the class/request type (JsonObjectRequest, ImageRequest, etc.) is kind of awkward and reduces the flexibility of the calling code a bit, as you are tied to Volley's existing Request type hierarchy. I like the straightforwardness of just setting Content-Type as a header like any other (don't do this with Volley, by the way; you'll end up with two Content-Type headers!). That's just my personal opinion, though, and it can be worked around.

That is not to say that Volley does not have some useful features. It certainly does. Easily customizable retry policies, transparent caching, a cancellation API, and support for request scheduling and concurrent connections are great features. Just know that it's not intended for all HTTP use cases (see item 1 above), and that there are some headaches involved in putting Volley into production use in your app (item 2).

Jones answered 28/8, 2014 at 19:10 Comment(2)
The full memory loading is what i slowly killing me. Thank god someone else mentioned it.Signpost
The library may also make a defensive copy of your request body, so the memory consumption for large requests could be twice what you might expect.Jones
T
9

I've recently found a lib called ion that brings a little extra to the table.

ion has built-in support for image download integrated with ImageView, JSON (with the help of GSON), files and a very handy UI threading support.

I'm using it on a new project and so far the results have been good. Its use is much simpler than Volley or Retrofit.

Tandem answered 29/3, 2015 at 3:28 Comment(2)
ion vs retrofit, which one would you recommend?Bradlybradman
Retrofit is better then ionPrevailing
N
4

Adding to the accepted answer and what LOG_TAG said....for Volley to parse your data in a background thread you must subclass Request<YourClassName> as the onResponse method is called on the main thread and parsing on the main thread may cause the UI to lag if your response is big. Read here on how to do that.

Neo answered 16/3, 2015 at 7:33 Comment(1)
right... volley parse the response on main thread that causes th ui to lag when response is really big.Loran
C
3

Retrofit 1.9.0 vs. RoboSpice

I am using both in my app.

Robospice works faster than Retrofit whenever I parse the nested JSON class. Because Spice Manger will do everything for you. In Retrofit you need to create GsonConverter and deserialize it.

I created two fragments in the same activity and called the same time with two same kind of URLs.

09-23 20:12:32.830  16002-16002/com.urbanpro.seeker E/RETROFIT﹕   RestAdapter Init
09-23 20:12:32.833  16002-16002/com.urbanpro.seeker E/RETROFIT﹕ calling the method
09-23 20:12:32.837  16002-16002/com.urbanpro.seeker E/ROBOSPICE﹕ initialzig spice manager
09-23 20:12:32.860  16002-16002/com.urbanpro.seeker E/ROBOSPICE﹕ Executing the method
09-23 20:12:33.537  16002-16002/com.urbanpro.seeker E/ROBOSPICE﹕ on SUcceess
09-23 20:12:33.553  16002-16002/com.urbanpro.seeker E/ROBOSPICE﹕ gettting the all contents
09-23 20:12:33.601  16002-21819/com.urbanpro.seeker E/RETROFIT﹕ deseriazation starts
09-23 20:12:33.603  16002-21819/com.urbanpro.seeker E/RETROFIT﹕ deseriazation ends
Circumvolution answered 23/9, 2015 at 14:46 Comment(1)
RoboSpice is now obsolete.Kareenkarel
S
2

And yet another option: https://github.com/apptik/jus

  • It is modular like Volley, but more extended and documentation is improving, supporting different HTTP stacks and converters out of the box
  • It has a module to generate server API interface mappings like Retrofit
  • It also has JavaRx support

And many other handy features like markers, transformers, etc.

Sugar answered 21/3, 2016 at 16:14 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.