À l'aide de OKHttp, quelle est la différence entre synchrone demande dans AsyncTask et OKhttp requête Asynchrone?
OKHttp prend en charge les deux synchrone et asynchrone de l'api.
Si je veux émettre une demande asynchrone, je peux:
- Utiliser un AsyncTask, et la question OKhttp synchrone de l'api.
- Question un OKhttp asynchrone de l'api.
Quelle est la différence entre ces 2 options? Et lequel est le mieux?
Vous devez vous connecter pour publier un commentaire.
Beaucoup diffère!
À l'aide de
AsyncTask
pour les requêtes HTTP est assez bien une des pires choses que vous pouvez faire sur Android. Il est rempli de problèmes et pièges qui sont les mieux sans condition à éviter. Par exemple, vous ne pouvez pas annuler une demande au cours de l'exécution. Les motifs de l'utilisation deAsyncTask
aussi communément fuite d'une référence à unActivity
, un péché cardinal de développement Android.OkHttp asynchrone est largement supérieur pour de nombreuses raisons:
Callback
est libéré et ne sera jamais appelé. En outre, si la demande n'a pas encore commencé, il ne sera jamais exécuté. Si vous êtes à l'aide de HTTP/2 ou SPDY nous pouvons annuler la mi-demande d'économiser de la bande passante et de la puissance.Activity
peut être étiqueté avec leActivity
instance. Puis dansonPause
ouonStop
vous pouvez annuler toutes les demandes taggés avec leActivity
instance.Call
ce mécanisme est beaucoup plus efficace que le blocage de la version.Donc, si vous le pouvez, utilisez
Call.enqueue
!AsyncTask
pouvez annuler (à partir de stackoverflow.com/questions/4748964/...), j'ai toujours voté à votre réponse.Rien de plus. OKHttp async est OKHttp API conduit. Tant et aussi longtemps que vous le bundle les pots ensemble pour toutes les plates-formes vous devriez être bon. AsyncTask est Android manière de faire les choses.
Cependant depuis en Nid d'abeille Async tâche exécute les tâches de manière séquentielle et non pas en parallèle. Cela signifie que, bien que la méthode execute de l'AsyncTask s'étend sur un nouveau thread qui exécute votre travail loin de la thread de l'INTERFACE utilisateur, mais toutes les tâches envoyées à l'une AsyncTask exécuter dans le même duré fil.
Donc pour 3 tâches soumises u ne pas obtenir 3 threads elles sont toutes exécutées de manière séquentielle sur un seul fractionné fil. Avec OKHttp vous pouvez obtenir une véritable parallélisme à l'aide de rappels et async GET et POST.
Si vous pouvez le faire vrai parallélisme dans AsyncTask méthodes (vérifier la surcharge d'exécuter des méthodes dans AsyncTask), mais par défaut d'Android comportement est de ne pas le faire.