Создание нового экземпляра OkHttpClient происходит медленно (500 мс)

У меня проблема с созданием нового экземпляра класса OkHttpClient. Это занимает от 500 до 600 мс.

import okhttp3.OkHttpClient;

OkHttpClient client = new OkHttpClient();

У меня проблема только на Motorola TC55 с Android api 16. Пользуюсь библиотекой OkHttp версии 3.8.1. Другие устройства, которые я пробовал, работали нормально и сразу же создавали экземпляр.

Я также попробовал библиотеку OkHttp в версии 2.4.0 на устройстве Motorola TC55, и создание экземпляра было немедленно.

Из трассировщика видно, что он тормозит загрузку хранилища ключей.

Стек — трассировка методов


person nasdaq    schedule 20.07.2017    source источник
comment
Используйте трассировку методов, чтобы определить, в чем заключается проблема.   -  person CommonsWare    schedule 20.07.2017
comment
sina sen misin :) cevap veren adam mekanın sahibi ona gore sinirlendirme atar siteden   -  person 6155031    schedule 20.07.2017


Ответы (1)


Скорее всего, это медленная инициализация фабрики сокетов SSL, диспетчера доверия и очистки цепочки сертификатов. Очистка цепочки сертификатов является новой, начиная с OkHttp 2.7.5. Этот код работает с потенциальной проблемой безопасности.

Лучшее решение — повторно использовать один и тот же экземпляр клиента OkHttp для всех запросов. Или попробуйте найти способ оптимизировать очиститель цепочки сертификатов в API 16.

https://github.com/square/okhttp/blob/master/okhttp/src/main/java/okhttp3/internal/platform/AndroidPlatform.java#L187

person Jesse Wilson    schedule 24.07.2017
comment
Спасибо за ваше объяснение. - person nasdaq; 24.07.2017