I am not clear on where Refrofit adapter and API classes should be kept in Android? Should I use Application class or Singleton to keep the adapter? How about the API interface classes?
RestAdapter myRestAdapter; // where should I keep this guy?
MyAPI mApi = myRestAdapter.create(MyAPI.class); // and how about this guy?
I have a few different api like MyApi1, MyApi2, that get called inside fragments at different points in app.
Thanks
Both of these should be treated as singletons and only created once.
The
RestAdapter
holds the common request executor, shared HTTP client configuration, remote service info, etc. These should be shared for every API interface.The API interfaces should also be singletons. They are thread safe and require a bit of initial processing when created (minimal, but non-zero).
Retrofit 1.7 doesn't allow one to perform request-specific operations, specifically the
RequestInterceptor
. Because of this I'm using a map of Singletons where each API gets its ownRestAdapter
. This way I can control Headers and such that are specific to an API.I also give consumers of my library the ability to create a local API+
RestAdapter
combo for one-off scenarios if the need arises.