Temporizzazione predefinita di OkHttp / Retrofit

Mi stavo chiedendo quanti secondi dovrei impostare al mio cliente retrofit.

  1. Quanti secondi devo utilizzare come timeout predefinito?
  2. Qual è il timeout predefinito per OkHttp / Retrofit, dovremmo lasciare i valori predefiniti?

  • Come fare pennello personalizzato per la canvas in android?
  • Pinch zoom su un'image in Xamarin
  • Utilizzo di jqMath nell'applicazione Android
  • Come salti le parti di una stack di attività quando ritorni i risultati in Android?
  • Appcelerator Titanium Android servizio di localizzazione di background
  • Come faccio a creare un ImageView nel codice java, all'interno di un layout esistente?
  • Come rilevare che il DrawerLayout ha iniziato l'apertura?
  • Confronto di due editTexts in android
  • numero di build manifesto android
  • Come annullare il timer e rinnovare lo stesso timer?
  • Come utilizzare il metodo http post per call il webservice php in android?
  • Dove si trova la cartella Android SDK?
  • 3 Solutions collect form web for “Temporizzazione predefinita di OkHttp / Retrofit”

    1. Non c'è un valore magico e dipende dalle aspettative sul tuo backend. Se qualcuno ti dice che 5s è un buon valore e stai avere una media di 8s su uno dei tuoi endpoint a tempi di caricamento massimo, allora 8s non funziona per te. Come valori generali che ho visto che sotto i dieci è considerato breve e tra i 10 ei 20 anni sono comuni.

    1. A partire da OkHttp 3.4.1 e Retrofit 2.1.0 , il valore predefinito per OkHttp è di 10 secondi. Retrofit si basa sul valore predefinito OkHttp.

    Codice di ripristino dello snippet: (se non si fornisce un OkHttpClient):

    okhttp3.Call.Factory callFactory = this.callFactory; if (callFactory == null) { callFactory = new OkHttpClient(); } 

    Frammento di codice OkHttp:

      connectTimeout = 10_000; readTimeout = 10_000; writeTimeout = 10_000; 

    1. L'unica applicazione Google a cui posso accedere è l'applicazione Google IO .

    Stanno utilizzando valori diversi. Ad esempio, per i feedback correlati, essi utilizzano:

     public class FeedbackConstants{ public static final int FEEDBACK_CONNECT_TIMEOUT_MS = 15000; public static final int FEEDBACK_READ_TIMEOUT_MS = 15000; public static final int GOOGLE_API_CLIENT_CONNECTION_TIMEOUT_S = 10; 

    }

    Usano Volley e potete dare un'occhiata a qualche timeout pure. E sì, sembrano brevi.

     /** The default socket timeout in milliseconds */ public static final int DEFAULT_TIMEOUT_MS = 2500; 

    In un client http diverso ti danno alcuni indizi su quello che ritengono è un breve e ragionevole short timeout.

      /** * Default 2s, deliberately short. If you need longer, you should be using * {@link AsyncHttpClient} instead. */ protected int connectionTimeout = 2000; /** * Default 8s, reasonably short if accidentally called from the UI thread. */ protected int readTimeout = 8000; 
    1. Non dovrebbe durare per sempre e non troppo breve. IMHO, dovrebbe essere tra i 10 ei 30 anni.
    2. L'impostazione predefinita di connessione time out che Retrofit ti dà (se non hai specificato client http in modo esplicito) è di 15 secondi.

    Fonte:

     OkHttpClient defaultClient() { OkHttpClient client = new OkHttpClient(); client.setConnectTimeout(15, TimeUnit.SECONDS); client.setReadTimeout(15, TimeUnit.SECONDS); client.setWriteTimeout(15, TimeUnit.SECONDS); return client; } 
    1. Ho questa sensazione che Google utilizza 30 secondi. Non sono sicuro.

    Sto usando così nel mio RetrofitApiClient. versione okhttp 3.4.1

     public class RetrofitApiClient { private static OkHttpClient.Builder httpClient = new OkHttpClient.Builder() .connectTimeout(15, TimeUnit.SECONDS) .readTimeout(15L, TimeUnit.SECONDS) .writeTimeout(15L, TimeUnit.SECONDS); public void someMethod() { OkHttpClient client = httpClient.build(); } } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.