2017-07-20 4 views
1

Ich habe ein Problem beim Erstellen einer neuen Instanz der OkHttpClient-Klasse. Es dauert zwischen 500-600 ms.Erstellen neuer Instanz von OkHttpClient ist langsam (500ms)

import okhttp3.OkHttpClient; 

OkHttpClient client = new OkHttpClient(); 

ich ein Problem nur auf Motorola TC55 haben mit Android api 16. Ich verwende die OkHttp Bibliothek in der Version 3.8.1. Die anderen Geräte, die ich ausprobiert habe, arbeiteten normal und erstellten die Instanz sofort.

Ich habe auch versucht, die OkHttp-Bibliothek in der Version 2.4.0 auf dem Gerät Motorola TC55 und die Erstellung der Instanz wurde sofort.

Aus dem Tracer ist offensichtlich, dass es das Laden des Keystore verlangsamt.

Stack - Method Tracer

+1

Verwenden Verfolgungsverfahren, um festzustellen, wo das Problem liegt. – CommonsWare

+0

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

Antwort

0

Es ist höchstwahrscheinlich die SSL-Socket-Factory, Trust-Manager und Zertifikatskette Reiniger, der langsam zu initialisieren. Die Reinigung der Zertifikatskette ist seit OkHttp 2.7.5 neu. Dieser Code behebt ein potenzielles Sicherheitsproblem.

Ihre beste Abhilfe besteht darin, dieselbe OkHttp-Clientinstanz für alle Anfragen zu verwenden. Oder versuchen, einen Weg zu finden, die Zertifikatskette Reiniger in API zu optimieren 16.

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

+0

Vielen Dank für Ihre Erklärung. – nasdaq

Verwandte Themen