TGViewer
Android under the hood Android under the hood @android_under_the_hood · 1.53K subscribers
Post #22 845
Полезные факты о библиотеке OkHttp.

1) OkHttpClient достаточно тяжелый объект, содержащий в себе пул HTTP соединений и очередь запросов, поэтому хорошей практикой будет инициализировать такой объект лениво и хранить в долгоживущем месте, например в Application классе.

2) По умолчанию пул HTTP соединений ограничен до 5, а максимальное время простаивания соединения составляет 5 минут. В большинстве случаев этого хватает, а для специфичных кейсов вы всегда можете заменить стандартный пул на свой методом OkHttpClient.Builder.connectionPool().

3) OkHttp поддерживает два основных протокола: HTTP/1.1 и HTTP/2, второй позволяет выполнять запросы параллельно на одном соединении: в таком случае пул редко будет превышать более одного активного соединения.

4) Для установки соединения OkHttp использует java.net.Socket, который оборачивается в javax.net.ssl.SSLSocket, если веб-сервер поддерживает защищенное соединение (https), что сейчас является де-факто стандартом.

5) Управлением очередью запросов занимается Dispatcher. Он отвечает за отмену и выполнение запросов на пуле потоков, по умолчанию пул не ограничен и новые потоки создаются по требованию, если нет свободных. Вы можете задать свой Dispatcher и настроить такие параметры как: maxRequests, maxRequestsPerHost и executorService.

6) Выполнение запроса в OkHttp эквивалентно проходу по цепочке обязанностей, состоящей из Interceptor'ов. Библиотека имеет несколько своих Interceptor'ов, которые отвечают за редиректы, кэширование, установку соединения и чтение данных, также вы можете добавить свои с помощью методов addInterceptor (Application Interceptor) и addNetworkInterceptor (Network Interceptor).
Главное отличие Application Interceptor'ов заключается в том, что они добавляются раньше основных Interceptor'ов OkHttp, поэтому им недоступно текущее соединение и они не могут отследить такие штуки, как редиректы или повторная установка упавшего соединения в отличии от Network Interceptor'ов, которые перехватывают гораздо больше данных.
  • ❤ 13
  • 👍 1
  • 🔥 1
  • 🤝 1
More from @android_under_the_hood
  1. Oct 4, 2026Всем привет, хочу поделиться проектом, который запустил 1 октября — ЗдесьЯ. Это цифровая с…
  2. Oct 2, 2026Kotlin lambdas, часть I. До версии Kotlin 2.0 лямбды компилировались в анонимные классы, р…
  3. Sep 27, 2026Делегат свойства в Kotlin. В Kotlin есть конструкция, которой нет в JVM: var name by NameD…
  4. Sep 23, 2026val vs var под капотом. На уровне Kotlin все просто: val x = 10 var y = 20 y = 30 // компи…
  5. Sep 20, 2026Возвращение Прошло уже полгода с последней записи на канале. За это время в моей жизни про…
  6. Feb 5, 2026Пару фактов о Go, часть II. 4) Вместо Kotlin Nullability указатели как в С/C++, то есть об…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →