Jorodan Posté(e) 18 novembre 2009 Share Posté(e) 18 novembre 2009 Salut les jeunes! Je continue mon développement! Ma dernier délire, récupérer un fichier XML sur le net. Donc j'aimerai attendre avec classe en prévenant l'utilisateur! J'en suis venu à utiliser AsyncTask! Voici mon code. Les commentaires expliquent ce que je veux faire. /** * Ma classe de gestion de travail en arrière plan. * @author Julien * */ class LoadReseauxTask extends AsyncTask { /** * Ici la méthode qui réalise le travail effectif : récupérer un fichier XML. */ @Override protected String doInBackground(String... urls) { // Réalisation de la récupération avec HTTPGET. HttpClient client = new DefaultHttpClient(); HttpGet getMethod = new HttpGet(urls[0]); ResponseHandler responseHandler = new BasicResponseHandler(); // Mon fichier pour récupérer le XML String myXML = ""; try { myXML = client.execute(getMethod,responseHandler); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { Toast.makeText(ChoixReseau.this, "Problème réseau + " /*+ t.getMessage()*/, 4000).show(); } return myXML; } // Pas encore utilisé protected void onProgressUpdate(Void inutilise) { } /** * La méthode en fin de traitement qui prévient l'utilisateur. * @param inutilise */ protected void onPostExecute(Void inutilise) { Toast .makeText(ChoixReseau.this, "Fini !", Toast.LENGTH_SHORT) .show(); } } La classe est utilisée dans mon activité par ces lignes : LoadReseauxTask lrt = new LoadReseauxTask(); lrt.execute(); Mon problème est que je ne comprends pas la syntaxe pour utiliser les paramètres. Quelqu'un a une idée ? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
thomas.l Posté(e) 18 novembre 2009 Share Posté(e) 18 novembre 2009 Ce sont les generics qui te posent problème ? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Jorodan Posté(e) 18 novembre 2009 Auteur Share Posté(e) 18 novembre 2009 Je crois oui!!! Je sais pas les utiliser dans .execute() C'est du pur Java ? Auquel cas je chercherai dans ce sens sur des sites consacrés au java :D Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Jorodan Posté(e) 18 novembre 2009 Auteur Share Posté(e) 18 novembre 2009 Correction!!! Je ne savais pas que ca s'appelait "Generics" mais le type entre chevrons je sais l'utiliser!! Mon problème est que je ne comprends pas comment insérer les paramètres dans execute(). Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
drakaz Posté(e) 18 novembre 2009 Share Posté(e) 18 novembre 2009 (modifié) Tu doit passer tes paramètres comme cela : .execute("a","b") et ensuite dans ton doInBackground : urls[0] vaudra a urls[1] vaudra b Modifié 18 novembre 2009 par drakaz Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Jorodan Posté(e) 18 novembre 2009 Auteur Share Posté(e) 18 novembre 2009 Alors dans ce cas là, comment je récupère mes informations en retour ??? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
drakaz Posté(e) 18 novembre 2009 Share Posté(e) 18 novembre 2009 Citation Alors dans ce cas là, comment je récupère mes informations en retour ??? Je ne suis qu'un mauvais dev, mais je dirais avec un assesseur ? Il me semble qu'un AsyncTask n'est qu'une classe avec gestion integrée des thread, un simple assesseur devrais te permettre de récupérer ta données. A confirmer par un dev expérimenté ! :) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Jorodan Posté(e) 18 novembre 2009 Auteur Share Posté(e) 18 novembre 2009 Bien vu, je n'y avais pas pensé !! La doc pour get() : http://developer.android.com/intl/fr/reference/android/os/AsyncTask.html#get%28long,%20java.util.concurrent.TimeUnit%29 public final Result get (long timeout, TimeUnit unit) Since: API Level 3 Waits if necessary for at most the given time for the computation to complete, and then retrieves its result. Parameters timeout Time to wait before cancelling the operation. unit The time unit for the timeout. Returns * The computed result. Throws CancellationException If the computation was cancelled. ExecutionException If the computation threw an exception. InterruptedException If the current thread was interrupted while waiting. TimeoutException If the wait timed out. Ca doit être ca :D Merci Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
thomas.l Posté(e) 18 novembre 2009 Share Posté(e) 18 novembre 2009 Attention à ne pas refaire du synchrone par le fait d'attendre le résultat. Profite du fait d'être dans le Thread UI lors de postExecute(). Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Jorodan Posté(e) 18 novembre 2009 Auteur Share Posté(e) 18 novembre 2009 Je viens de remarquer ce problème :D merci :D Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Rejoignez la conversation
Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.