Comment vérifier Volley Demande de la File d'attente est vide?Et la Demande est fini?
Comment vérifier Volley Demande de la File d'attente est vide?Et la Demande est fini?
Après la fin de toutes les demandes, je suis en train de charger l'interface utilisateur, mais c'est le chargement avant de demandes de réponse
for (i = 1; i < obj.length; i++) {
String apiString = myGlobalClass.getApiUrl();
callRequest(apiString);
}
private callRequest(String apiString) {
//TODO Auto-generated method stub
request = new StringRequest(Request.Method.GET, apiString,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
//TODO Auto-generated method stub
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
//TODO Auto-generated method stub
}
});
queue.add(request);
}
OriginalL'auteur lazy lord | 2014-09-01
Vous devez vous connecter pour publier un commentaire.
Le Volley Lib ne fournit pas une méthode native de vérifier si la demande a déjà été finalisé, cette information est gardée par une propriété privée dans un intérieur de classe de Lib.
Vous pouvez créer votre propre contrôle de cette.
Quand j'ai besoin de cette fonctionnalité que j'ai implémenté la méthode suivante pour accéder à CurrentRequests définie par la réflexion.
J'ai utilisé une lib pour faciliter cette tâche. Miroir
Mais il ne fonctionne pas de manière efficace pour moi, j'ai donc décidé de garder un HashMap de référence à tous ma demande avec un drapeau.
OriginalL'auteur Anderson K
Pourquoi ne pas faire des changements dans RequestQueue fichier que le Volley est un projet open source et profiter de cette.Je pense qu'au lieu de l'aide de la réflexion de l'API nous devrions refactoriser le code dans la bibliothèque.
En fait, ce code est de vérifier si la Demande de tag est dans la file d'attente ou pas. Si vous voulez vérifier Volley Demande de la file d'attente vide, puis utiliser le code ci-dessous un extrait.
public boolean isRequestQueueEmpty(){ return mCurrentRequests.size() == 0; }
Merci @Himanshu. Votre réponse m'a aidé à trouver une solution à mon problème.
C'est une bonne suggestion. Ce que je savais, c'était d'avoir un contrôle sur l'objet de Demande qui a intégré la méthode "hasHadResponseDelivered" qui renvoie true si la réponse est envoyée au client. Cependant je suppose que lorsqu'il y a plusieurs requêtes consécutives dans le pipeline, votre solution peut fonctionner beaucoup mieux. Bravo.
Dans votre code, ce qui est mCurrentRequests ?
OriginalL'auteur Himanshu
Déclarer à l'échelle mondiale variable compteur, l'incrémenter lors de la demande d'ajout à la file d'attente, décrémenter il en volley onResponse événement, comme ceci:
Rien de fantaisie, mais fonctionne de manière très efficace pour moi.
OriginalL'auteur Gruiberg
pour une seule demande il y a deux auditeur pour qu'il onResponse pour le succès et la onErrorResponse si la demande complétée à l'exception
au lieu de récupérer tous les enregistrements en boucle de fetch par un seul JSONRequest pour un meilleur résultat avec moins de consommation de temps.
en outre, si vous avez toute question, veuillez expliquer ce que vous voulez exactement à mettre en œuvre.
OriginalL'auteur JosephM
Que diriez-vous simplement de prendre avantage de cancelAll(RequestFilter ) ?
De l'utiliser ..
Depuis apply() renvoie toujours false, il n'affecte pas le contenu de la file d'attente. Pas besoin de refactoriser le RequestQueue pour cela.
OriginalL'auteur dangVarmit
Même si je suis en retard pour répondre, je voudrais partager ce que j'ai fait pour savoir si une demande de la file d'attente est vide ou pas.
J'ai créé une variable globale
files
initialisé à nombre de fichiers mis en queeu et décrémenté dansonResposne
. Ensuite, j'ai ajoutéonRequestFinisedListener
àRequestQueue
et de vérifier sifiles
est0
ou pas.Voici mon code:
OriginalL'auteur Saeed Jassani
Quant à lien
Vous pouvez la contrôler, et si il n'y a pas de file d'attente en créer un nouveau avec ce code:
Ajouter une nouvelle file d'attente.
De contrôle si la file d'attente est vide
Pour plus d'informations, voir la lien
EDIT:
Pour le contrôle de la demande,l'échec ou la réussite d'utilisation onResponseListener
J'ai édité la réponse
C'est totalement faux et pas de réponse à la question d'origine.
OriginalL'auteur OmerFaruk