2013-08-10 1 views
0

J'ai implémenté avec succès Volley pour le traitement de requêtes réseau. Cependant, quand mon application démarre, elle s'éteint et obtient un fichier de configuration dont elle a besoin. Je me demande si Volley est le bon choix pour obtenir ces données de configuration initiale très tôt? Est-ce que cela prend un certain temps pour instancier les filets de volée pour la file d'attente, le cache etc., et donc peut-être que pour cette requête initiale, c'est le mauvais choix? Je voulais obtenir des commentaires à ce sujet. D'une part, c'est un bon choix à cause de ses paramètres RetryPolicy qui vont essayer plusieurs fois de remplir la requête, d'autre part cela peut-il prendre du temps pour configurer la file d'attente des demandes de volée et lancer les discussions? Suis-je préférable d'émettre cette demande initiale en utilisant juste un AsyncTask?L'API Volley est-elle adaptée pour obtenir les données de configuration initiale d'une application?

+0

Volley encore très nouveau, je tête AsyncTask d'abord pour vous. – JosephChilberry

+1

@TestBest vous avez demandé 9 des 11 dernières questions avec le tag Volley mais n'a presque pas accepté de réponse. Les membres de la communauté essaient de s'entraider, donc si quelqu'un vous a aidé à résoudre votre problème, il est habituel d'accepter leur réponse ou au moins de commenter et de dire ce qui n'allait pas. Il aide également les autres qui ont la même question ou une question similaire. –

Répondre

1

Utilisez Volley si vous trouvez ses fonctionnalités utiles ou si vous souhaitez conserver une cohérence avec la façon dont vous effectuez les demandes réseau dans le reste de votre application.

Le temps nécessaire à l'installation de votre Volley n'est pas important. Le temps d'aller-retour nécessaire pour récupérer votre fichier de configuration sera dans les 100s de ms. Alors que la mise en place de Volley nécessitera au plus 10s de ms.

1

Comme il est une demande first, je preffer utiliser AsyncTask, Volley est vraiment très bon, mais c'est un processus important au très beggining de l'application, peut-être à ce moment-là Volley n'est pas ready encore ou prendra some additional meaningful time pour faire la demande, donc AsyncTask c'est mieux pour ce cas particulier, plus vous aurez tout le contrôle total sur la façon dont cette demande first serait faite. EDIT: J'ai juste vu Ficus Kirkpatrick (l'esprit maître de la librairie Volley), et il m'a dit que vous pouviez créer un RequestQueue à la demande ou le créer au début et le garder comme un singleton pour le reste du code, donc entendant ça, vous devriez essayer avec AsyncTask et Volley et vérifier quels sont les résultats en termes de performance, je pense toujours qu'un AsyncTask plus simple fera le travail mieux qu'utilisant instanlly Volley, il a également dit que bien sûr Volley n'est pas un must, donc je suppose C'est l'un des cas où ce n'est pas un must.

+0

bien si je peux confirmer que cela prend beaucoup de temps à installer, un des avantages de Volley pour obtenir la configuration initiale est sa politique de réessayer. S'il est vraiment important d'obtenir la configuration plutôt que la nouvelle tentative, il est préférable d'obtenir la configuration, mais vous ne savez pas s'il y a des risques à attendre que la volée s'initialise au début. – TestBest

0

Si vous souhaitez utiliser une infrastructure AsyncTask, mais comme la facilité de créer une demande Volley, envisagez d'utiliser droidQuery, qui suit le même schéma que la demande Javascript. Par exemple, pour obtenir JSON de example.com, vous pouvez utiliser la méthode abrégée:

$.getJSON("http://www.example.com", null, new Function() { 
    @Override 
    public void invoke($ droidQuery, Object... params) { 
     JSONObject json = (JSONObject) params[0]; 
     //TODO handle json 
    } 
}); 

ou la méthode longhand:

$.ajax(new AjaxOptions().url("http://www.example.com") 
         .type("GET") 
         .dataType("json") 
         .success(new Function() { 
          @Override 
          public void invoke($ droidQuery, Object... params) { 
           JSONObject json = (JSONObject) params[0]; 
           //TODO handle json 
          } 
         }) 
         .error(new Function() { 
          @Override 
          public void invoke($ droidQuery, Object... params) { 
           AjaxError e = (AjaxError) params[0]; 
           Log.e("$", "Error " + e.status + ": " + e.error); 
          } 
         })); 
Questions connexes