android - пример - retrofit




Клиентская библиотека API REST для Android (4)

Вы также можете использовать RESTDroid . Это очень похоже на RoboSpice, но проще в использовании (хотя и менее мощный).

Если вы создадите модуль Parse.com для RESTDroid, не стесняйтесь добавлять его на GitHub!

Мы создаем приложение для обмена сообщениями на основе местоположения, которое использует Parse.com как back-end (Parse.com похож на Urban Airship / PubNub и т. Д.), И теперь мы хотим переключиться на наш собственный интерфейс для лучшего контроля. Для этого мы построили основанный на node.js сервер с функциональностью, открытой через REST API

Чтобы использовать этот API, мы хотим создать библиотеку Android (похожую на Android SDK от Parse.com ), которая абстрагирует все запросы HTTP-запросов / ответов или REST API и предоставляет прямые функции для различных операций, таких как getUsers (), sendMessage () и т. Д.

Способы реализации REST API Client в Android:

Теперь, учитывая, что мы хотим создать библиотеку Android, и одновременно могут возникать вызовы REST API, когда пользователь взаимодействует с приложением, какой подход лучше всего подходит? Я открыт для других предложений и рекомендаций.

ОБНОВЛЕНИЕ . Сначала мы построили собственную библиотеку с помощью IntentService + ResultReceiver, которая отлично работала. Но позже мы наткнулись на Android Async Http . Используй это. Это здорово!


Вы также можете попробовать аннотации Android с плагином rest-spring для выполнения этих задач автоматически.

Они используют обертку на весеннем каркасе для андроида и обеспечивают действительно хороший способ справиться с отдыхом .

Примеры:

Замените AsyncTask -> doInBackground () с @Background аннотацией:

@Background
protected void backgroundWork(){
    // do something in background
}

Заменить runOnUiThread, onPostExecute () с помощью @UiThread

@UiThread
protected void uiWork(){
    // do something on UI Thread
}

Для API Rest API

создать клиент отдыха:

@Rest(rootUrl = "http://company.com/ajax/services",
      converters = { MappingJackson2HttpMessageConverter.class })
public interface MyRestClient {

    @Get("/events")
    EventList getEvents();
}

использовать клиент для отдыха:

@RestClient
MyRestClient myRestClient;

public void showAllEvents(){
    EventList list = myRestClient.getEvents();
    // do something with this list

}

Лучшая импликация, которую я видел на основе Google IO Pro Tips 2010, - это библиотека RoboSpice, которая основана на REST и очень умно работает с жизненным циклом Activity, чтобы не утечка памяти.

Быстрая infographic библиотека here

  • Погрузчики предназначены для базы данных, а не REST, они сбрасываются при сбросе активности, что означает, что вы теряете свои данные.
  • Асинхронная задача, просто нет.
  • Intent Service + Результирующий приемник в основном работает RoboSpice, поэтому, если вы создаете свою собственную библиотеку, я бы взял такой подход!
  • Сервис также хорош, как и метод IntentService, но IntentService работает немного лучше в этом случае.

Метод Service может быть лучше, посмотрите на службу robospice, которую они используют ExecutorService которая завершает работу Service когда у него закончилось выполнение Requests , это больше параллелизма Java, чем Android. Главное отметить, что служба запускается во время обработки запросов, а затем завершает работу, если их нет.

Преимущество использования ExecutorService или пула потоков любого типа заключается в том, что вы можете определить, сколько запросов вы можете запустить сразу. если у вас очень быстрое соединение, 2-4 - это то, что я когда-либо предлагаю.


Я использовал Retrofit и это действительно хорошая библиотека, которая обеспечивает легкую структуру для управления конечными точками и анализа данных / коллекций / объектов.

Документация достаточно полная, чтобы легко писать код.

CQFD> пойти на это







intentservice