2014-01-20 3 views
1

Я не понимаю, где в Android должны храниться адаптеры Refrofit и классы API? Должен ли я использовать класс Application или Singleton для поддержки адаптера? Как насчет классов интерфейса API?Где сохранить адаптер для переоснащения в Android-приложении?

RestAdapter myRestAdapter; // where should I keep this guy? 

MyAPI mApi = myRestAdapter.create(MyAPI.class); // and how about this guy? 

У меня есть несколько различных API, как MyApi1, MyApi2, которые вызываются внутри фрагментов в разных точках приложения.

Благодаря

ответ

11

Оба они должны быть обработаны, как одиночки, и только один раз. Созданы

RestAdapter содержит общий исполнитель запросов, общую конфигурацию клиента HTTP, информацию о удаленных сервисах и т. Д. Они должны использоваться для каждого интерфейса API.

Интерфейсы API также должны быть одноточечными. Они являются потокобезопасными и требуют небольшого количества начальной обработки при создании (минимальное, но отличное от нуля).

+0

Ваш ответ прекрасен, но вы упомянули, где лучше всего разместить их. Является ли хорошей идеей хранить один экземпляр RestAdapter в приложении? И построить() это в методе onCreate()? А как насчет интерфейсов API? Должен ли я создавать их в действиях? У меня были те же сомнения, и я пропустил такую ​​документацию. Лучший! –

0

Retrofit 1.7 не позволяет выполнять операции с конкретными запросами, в частности, RequestInterceptor. Из-за этого я использую карту Singletons, где каждый API получает свой собственный RestAdapter. Таким образом, я могу управлять заголовками и такими, которые специфичны для API.

Я также предоставляю пользователям моей библиотеки возможность создать локальный API + RestAdapter комбо для одноразовых сценариев, если возникнет такая необходимость.