2017-07-20 4 views
1

J'ai un problème lors de la création d'une nouvelle instance de la classe OkHttpClient. Cela prend entre 500-600 ms.La création d'une nouvelle instance de OkHttpClient est lente (500ms)

import okhttp3.OkHttpClient; 

OkHttpClient client = new OkHttpClient(); 

J'ai un problème uniquement sur Motorola avec Android TC55 api 16. J'utilise la bibliothèque OkHttp dans la version 3.8.1. Les autres appareils que j'ai essayés fonctionnaient normalement et créaient l'instance immédiatement.

J'ai également essayé la bibliothèque OkHttp dans la version 2.4.0 sur l'appareil Motorola TC55 et la création d'instance a été immédiatement. Il est évident que le traceur ralentit le chargement du keystore.

Stack - Method Tracer

+1

Utiliser la méthode de traçage pour déterminer où réside le problème. – CommonsWare

+0

sina sen misin :) cevap veren adam mekanın sahibi ona göre sinirlendirme atar siteden – 6155031

Répondre

0

Il est très probablement l'initialisation de l'usine de socket SSL, gestionnaire de confiance et plus propre chaîne de certificats qui est lent. Le nettoyage de la chaîne de certificats est nouveau depuis OkHttp 2.7.5. Ce code fonctionne autour d'un problème de sécurité potentiel.

Votre meilleure solution consiste à réutiliser la même instance de client OkHttp pour toutes les demandes. Ou essayer de trouver un moyen d'optimiser le nettoyeur de chaîne de certificats API 16.

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

+0

Merci pour votre explication. – nasdaq