Mit OKHttp, was ist der Unterschied zwischen synchroner request in AsyncTask und OKhttp Asynchrone Anforderung?
OKHttp unterstützt sowohl synchrone und asynchrone api.
Wenn ich ausstellen möchten eine asynchrone Anfrage kann ich:
- Verwenden Sie einen AsyncTask, und Frage OKhttp synchrone api.
- Problem ein OKhttp asynchrone api.
Was ist der Unterschied zwischen diesen 2 Optionen? Und welches ist besser?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ziemlich viel unterscheidet!
Mit
AsyncTask
für HTTP-Anfragen ist so ziemlich eines der schlimmsten Dinge, die Sie tun können, auf Android. Es ist mit Problemen behaftet und fallen, am besten sind unbedingt zu vermeiden. Zum Beispiel, können Sie nicht Abbrechen einer Anfrage während der Ausführung. Die Muster der VerwendungAsyncTask
auch allgemein Leck eine Referenz auf einActivity
, eine Todsünde der Android-Entwicklung.OkHttp ist async ist weit überlegen aus vielen Gründen:
Callback
ist freigegeben und wird nie aufgerufen. Darüber hinaus, wenn die Anforderung noch nicht begonnen hat es nie ausgeführt wird. Wenn Sie mit HTTP/2 und SPDY können wir eigentlich Abbrechen, Mitte-Antrag spart Bandbreite und macht.Activity
versehen werden kann, mit derActivity
Instanz. Dann inonPause
oderonStop
stornieren können Sie alle Anfragen tagged mit derActivity
Instanz.Call
dieser Mechanismus sehr viel effizienter als die blockierende version.Also, wenn Sie können, verwenden Sie
Call.enqueue
!AsyncTask
kündigen kann (von stackoverflow.com/questions/4748964/...), habe ich noch stimmten Ihre Antwort.Nicht viel. OKHttp async ist OKHttp-API angetrieben. So lange, wie Sie bündeln die Gläser zusammen für alle Plattformen sollten Sie gut sein. AsyncTask ist Android Weg, Dinge zu tun.
Jedoch seit Honeycomb Async-task führt die Aufgaben nacheinander und nicht parallel. Dies bedeutet, dass, obwohl die execute-Methode von AsyncTask spannt sich ein neuer Roter Faden zieht sich Ihr job Weg vom UI-thread, sondern alle Aufgaben, die an einen AsyncTask ausgeführt in der gleichen übergreifenden thread.
Also bei 3 Aufgaben vorgelegt, u nicht 3 threads Sie laufen alle nacheinander auf einer einzigen übergreifenden thread. Mit OKHttp Sie erreichen können, echte Parallelität Rückrufe verwenden und asynchrone GET und POST.
Obwohl Sie tun können, echte Parallelität in AsyncTask-Methoden sowie (überprüfen Sie die überladenen Methoden ausführen, die in AsyncTask), aber Standard Android Verhalten ist nicht zu tun.