En utilisant OKHttp, quelle est la différence entre la requête synchrone dans AsyncTask et OKhttp Asynchronous request?

OKHttp prend en charge les api synchrones et asynchrones . Si je souhaite émettre une demande asynchrone, je peux:

  1. Utilisez un AsyncTask, et émettez OKhttp synchrone api.
  2. Problème d'un apy ashynchique OKhttp.

Quelle est la différence entre ces 2 options? Et lequel est le meilleur?

  • Erreur Gradle après mise à jour du studio
  • Comment résoudre l'entrée en double du java.util.zip.ZipException: com / google / gson / annotations / Expose.class?
  • Télécharger Android Progress
  • Régler l'enfant relatif pour nettoyer l'espace inutilisé
  • Mise en œuvre de TLS 1.2 sur Android 2.3.3
  • Android: comment initialiser une variable de type "Emplacement" (autre que rendre nulle)
  • Libgdx-android: intercepter la clé arrière et confirmer la sortie
  • Comment faire pour que l'en-tête ou le pied de page d'un ListView ne soit pas cliqué
  • Comment mettre à jour la barre de progression dans un élément ListView
  • Voir si le champ existe en classe
  • Animation personnalisée pour le tiroir de navigation ouvert et proche
  • Problème avec 9 image de patch en tant que fond
  • 2 Solutions collect form web for “En utilisant OKHttp, quelle est la différence entre la requête synchrone dans AsyncTask et OKhttp Asynchronous request?”

    Beaucoup diffère!

    L'utilisation de AsyncTask pour les demandes HTTP est l'une des pires choses que vous pouvez faire sur Android. Il est chargé de problèmes et d'inconvénients inconditionnellement évités. Par exemple, vous ne pouvez pas annuler une demande pendant l'exécution. Les modèles d'utilisation de AsyncTask également une référence à une Activity , un péché cardinal du développement d'Android.

    L'Async d'OkHttp est très supérieur pour de nombreuses raisons:

    • Il supporte l'annulation native. Si une demande est en vol, la référence au Callback est libérée et ne sera jamais appelée. En outre, si la demande n'a pas encore débuté, elle ne sera jamais exécutée. Si vous utilisez HTTP / 2 ou SPDY, nous pouvons effectivement annuler la demande à moyen de sauvegarde de la bande passante et de la puissance.
    • Il supporte le marquage de plusieurs requêtes et les annule toutes avec un seul appel de méthode. Cela signifie que toutes les demandes que vous faites, par exemple, une Activity peuvent être marquées avec l'instance Activity . Ensuite, sur onPause ou onStop vous pouvez annuler toutes les requêtes marquées avec l'instance Activity .
    • Si vous utilisez des requêtes HTTP / 2 ou SPDY et que les réponses sont multiplexées sur une connexion unique au serveur distant et en utilisant le mécanisme d' Call asynchrone, cela est beaucoup plus efficace que la version bloquante.

    Donc, si vous le pouvez, utilisez Call.enqueue !

    Rien de plus. OKHttp async est OKHttp API. Donc, tant que vous rassemblez les pots ensemble pour toutes les plates-formes, vous devriez être bien. AsyncTask est une façon de faire Android.

    Cependant, la tâche Honeycomb Async exécute les tâches séquentiellement et non en parallèle. Cela signifie que bien que la méthode d'exécution de AsyncTask s'étende sur un nouveau thread qui exécute votre travail à distance du thread UI, mais toutes les tâches envoyées à un AsyncTask s'exécutent dans le même thread étendu.

    Donc, pour 3 tâches soumises, vous ne recevez pas 3 threads, ils fonctionnent tous séquentiellement sur un seul thread étendu. Avec OKHttp, vous pouvez réaliser un véritable parallélisme à l'aide de rappels et de GET et POST asynchrones.

    Bien que vous puissiez faire un véritable parallélisme dans les méthodes AsyncTask (vérifiez les méthodes d'exécution surchargées dans AsyncTask), mais le comportement par défaut d'Android n'est pas pour le faire.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.