Где хранить модифицированный адаптер в приложении для Android?

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

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

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

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

Спасибо


person user3186731    schedule 20.01.2014    source источник


Ответы (2)


Оба они должны рассматриваться как синглтоны и создаваться только один раз.

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

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

person Jake Wharton    schedule 21.01.2014
comment
Ваш ответ в порядке, но вы упомянули, где их лучше всего разместить. Является ли хорошей идеей сохранение одноэлементного экземпляра RestAdapter в приложении? И построить() его в методе onCreate()? А как насчет интерфейсов API? Должен ли я создавать их экземпляры внутри действий? У меня были те же сомнения, и я пропустил подобную документацию. Лучший! - person Hugo Nogueira; 12.09.2014

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

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

person Kevin    schedule 22.10.2014