Методы дооснащения могут быть объявлены либо синхронно, либо асинхронно.
Метод с возвращаемым типом будет выполняться синхронно.
@GET("/user/{id}/photo")
Photo getUserPhoto(@Path("id") int id);
Асинхронное выполнение требует последний параметр метода является Callback
.
@GET("/user/{id}/photo")
void getUserPhoto(@Path("id") int id, Callback<Photo> cb);
В Android обратные вызовы будут выполнены в основном потоке. Для настольных приложений обратные вызовы будут выполняться в том же потоке, который выполнял HTTP-запрос.
дооснащения также интегрирует RxJava для поддержки методов с типом возвращаемого rx.Observable
@GET("/user/{id}/photo")
Observable<Photo> getUserPhoto(@Path("id") int id);
наблюдаемых запросов подписными асинхронна и наблюдаемым в том же потоке, выполняющего запрос HTTP. Чтобы посмотреть на другой поток (например, основной поток Android), вызовите observeOn(Scheduler)
по возвращенному Observable
.
Примечание: Интеграция RxJava является экспериментальной.
Прочитано «Синхронный против асинхронного или наблюдаемого» на http://square.github.io/retrofit/ –