Where to keep Retrofit Adapter in Android App?

2019-02-20 10:45发布

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

2条回答
Anthone
2楼-- · 2019-02-20 11:01

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).

查看更多
Ridiculous、
3楼-- · 2019-02-20 11:01

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 own RestAdapter. 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.

查看更多
登录 后发表回答