Volley et AsyncTask

J’ai lu un article sur Volley et je sais que c’est une excellente bibliothèque de réseautage. Mais je ne pouvais pas comprendre une chose.

Toutes les demandes sont asynchrones ou non?

Lorsque je veux envoyer une requête asyncTask en utilisant Volley, ai-je besoin de mettre la requête Volley dans AsyncTask? ou devrais-je simplement appeler Volley Request si c’est déjà une demande AsyncTask?

private class MyClass extends AsyncTask { @Override protected Ssortingng doInBackground(Ssortingng... params) { // do Volley request } } 

Est-ce une bonne approche?

Vous n’avez pas besoin d’exécuter la requête Volly sur la tâche asynchrone.

Pourquoi:

Ils gèrent toutes les tâches liées au réseau sur des threads distincts. Si vous examinez attentivement le projet de bibliothèque, ils ne voient pas la tâche asynchrone. Mais ils gèrent efficacement toutes les tâches liées au réseau.

Vérifiez la classe RequestQueue.java dans le package principal de Volly

Je colle ici le doc java.

 /** * A request dispatch queue with a thread pool of dispatchers. * * Calling {@link #add(Request)} will enqueue the given Request for dispatch, * resolving from either cache or network on a worker thread, and then delivering * a parsed response on the main thread. */ 

Édité:

Formant une demande :

Avec Volley, la communication réseau est gérée par RequestQueue. La meilleure façon d’utiliser RequestQueue et tous ses outils, en particulier le cache, consiste à l’instancier une fois et à le conserver en tant que singleton. À ce stade, vous pouvez ensuite append ou annuler des demandes, arrêter ou lancer des demandes et accéder au (x) cache (s) de réponse.

 RequestQueue queue =Volley.newRequestQueue(this); 

Une fois que la RequestQueue a été instanciée, une requête doit être formée. Cela peut être fait en utilisant quelques classes de requête «prêtes à l’emploi» incluses dans la bibliothèque Volley ou en étendant la classe de demande de Volley dans votre propre demande personnalisée. Les classes de requêtes déjà incluses dans Volley sont une requête Ssortingng, des requêtes JSON et une demande d’image. La plupart des classes de requêtes incluses dans la bibliothèque Volley utilisent des constructeurs comme celui ci-dessous.

Paramètres passés au constructeur:

RequestMethod (get, post, delete, ect) * JSONObject * -Un object facultatif qui sera publié avec votre demande ResponseListener – Où vos données seront envoyées une fois la demande terminée .

 JsonObjectRequest request = JsonObjectRequest(Requestmethod, url, null, new ResponseListener(), new ErrorListener()); 

Les auditeurs à recevoir une réponse:

Récepteur de réponse réussi

 private class ResponseListener implements Response.Listener{ @Override public void onResponse(JSONObject response){ } } 

Error Response Listener

 private class ErrorListener implements Response.ErrorListener{ @Override public void onErrorResponse(VolleyError error){ } } 

Enfin, ajoutez votre demande à la queue de demande, le rest de la volly se chargera pour vous.

Faire un appel:

Maintenant que nous avons effectué nos classes de demande et de réponse, nous sums prêts à append la demande à la queue et à récupérer les données. Pour ce faire, nous ajoutons simplement la demande à la queue.

 queue.add(request); 

La réponse ou l’erreur sera alors transmise aux classes de réponse / d’erreur que nous avons définies dans notre demande. Vous pouvez append autant de demandes à la file que vous le souhaitez et les réponses seront envoyées à leurs classes de réponse / erreur respectives.

Lorsque vous utilisez Volley, vous n’avez pas besoin de le combiner avec AsyncTask . Il fait les choses en réseau sur un autre thread pour vous.

Voici un exemple de base d’un appel réseau utilisant Volley. Comme vous pouvez le voir, tout le code est juste dans l’ Activity , sans qu’il soit nécessaire de définir une AsyncTask .

Volley ne peut pas être inséré dans AsyncTask car,

Volley lance lui-même des threads d’arrière-plan afin que toutes les requêtes réseau soient exécutées à partir du thread d’interface utilisateur, vous n’avez donc plus besoin d’étendre AsyncTask. Bien sûr, vous devrez faire attention à annuler les demandes en cours de rotation ou lorsque l’utilisateur quitte votre activité. Comme Volley est principalement utilisé à des fins de mise en réseau mineures dans Android (pour une utilisation majeure de DownloadManager). Il fait un travail similaire de la classe AsyncTask. Implémenter Singleton dans Volley. Les images peuvent également être envoyées à Volley.

L’intérêt de l’introduction de la bibliothèque Volley était de s’assurer que l’utilisateur n’a pas à se soucier de tout ce qui est “évident” lors de l’envoi d’une requête réseau. Cela signifie que volley prend soin de ce qui suit

  • Changer de fil d’arrière-plan
  • Réponse transparente du disque et de la mémoire
  • Plusieurs connexions réseau simultanées. etc

Pour répondre à votre question: vous n’avez pas à vous soucier de passer au thread d’arrière-plan , Volley s’en occupe tout seul. Une fois la requête terminée, le rappel de succès ou d’échec est invoqué sur le thread principal.

Ce tutoriel donne ici une bonne explication étape par étape de l’utilisation de la bibliothèque Volley