Intereting Posts
Приложение для конкретного уникального устройства Android onLayout () и AsyncTask () не работают вместе Добавление ярлыка URL на мобильный экран по ссылке на веб-сайте Как определить, установлено ли приложение на устройстве Android на веб-странице Чтение децибела для Android Media Player Как вызвать одну камеру Intent с записью, а также захват изображения? Разрешение GET_ACCOUNTS при использовании GCM – зачем это нужно? Автоматизированная публикация APK в Android Market Можно ли отображать значки в PopupMenu? Собственный ContentProvider с SQLite и несколькими таблицами Как структурировать данные дружбы с firebase? Виджет не удаляется при передаче RESULT_CANCELED в качестве результата для активности конфигурации Ошибка сборки Android для значений -b + sr + Latn Изменение значка навигационного ящика и интервала текста Android: как сделать клавиатуру введите кнопку сказать «Поиск» и обрабатывать его клик?

Модернизация сети делает сетевые вызовы в основном потоке?

Я пытаюсь изучить Retrofit + OkHttp на Android. Вот код, который я нашел в Интернете:

RestAdapter restAdapter = new RestAdapter.Builder().setExecutors(executor, executor) .setClient(new OkClient(okHttpClient)) .setServer("blah").toString()) .build(); 

Если я не использую службу-исполнитель, будет ли мой код запущен в основном потоке? Должен ли я делать веб-запросы в новом потоке?

Метод, возвращающий значение, выполняет его синхронно.

 @GET("/user/{id}/asset") Asset getUserAsset(@Path("id") int id); 

Чтобы сделать это Асинхронное все, что вам нужно, это добавить обратный вызов.

 @GET("/user/{id}/asset") void getUserAsset(@Path("id") int id, Callback<Asset> cb); 

Надеюсь это поможет.

С уважением!

Методы дооснащения могут быть объявлены для синхронного или асинхронного выполнения.

Метод с возвращаемым типом будет выполняться синхронно.

 @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-запрос.

Retrofit также интегрирует RxJava для поддержки методов с возвращаемым типом rx.Observable

 @GET("/user/{id}/photo") Observable<Photo> getUserPhoto(@Path("id") int id); 

Наблюдаемые запросы подписываются асинхронно и наблюдаются в том же потоке, который выполнял HTTP-запрос. Чтобы наблюдать за другим потоком (например, основной поток Android), вызовите observeOn(Scheduler) на возвращаемом Observable .

Примечание. Интеграция RxJava является экспериментальной.