1

J'ai fait une application qui récupère une page Web à partir d'Internet, basée sur l'entrée de l'utilisateur, qui a fonctionné. La récupération va dans différentes étapes: publier avec la chaîne de edittext comme paramètre, après une certaine analyse cela retourne un tableau de noms qui sont affichés dans un AlertDialog. Lorsque l'utilisateur en choisit un, il en fait un autre en tant que paramètre.
Cela fonctionne, mais maintenant je veux le rendre Threaded (ou similaire), de sorte que l'interface utilisateur ne cesse pas de répondre. J'ai essayé Threads, Runnables et AsyncTask, mais je n'arrive pas à trouver une construction pour récupérer le contenu dans un seul Thread, et aussi pouvoir retourner ce tableau et choisir un nom, SANS créer une nouvelle instance de mon HttpClient. Cela effacerait les cookies que vous voyez ...(Android) Tâche httpClient threadée, sans bloquer l'interface utilisateur?

J'ai passé une semaine entière à ceci comprendre, mais ne vois pas :(

Alors quelqu'un a une idée? Merci!

Répondre

2

Pour chacun de vos accès HTTP, vous pouvez créer une sous-classe AsyncTask distincte, puis instanciez chacun d'eux à tour de rôle et exécutez-les.Sur le Web, il existe de nombreux exemples d'utilisation de AsyncTask pour accéder à HTTP , par exemple. here ou here (juste google pour quelque chose comme this).

L'idée principale à saisir ici, est de faire toutes les opérations liées au réseau à l'intérieur du corps de la méthode doInBackground de l'AsyncTask.

Comme Ted Hopp dit, vous pouvez laisser l'instance HttpClient être membre privé de votre activité (ou quelle que soit la classe détient les deux AsyncTasks), ce qui va créer le premier AsyncTask, et le second peut simplement utiliser le même.

+0

J'ai aimé le deuxième "ici" le meilleur. très bonne solution –

0

Vous pouvez utiliser deux sous-classes AsyncTask, une pour chaque requête.Accédez aux sous-classes à une variable de votre classe d'activité qui stocke l'objet HttpClient

+1

Deux sous-classes? voulez-vous dire deux instances? – user717572

+0

Je veux dire des instances de deux sous-classes distinctes. Dans une sous-classe, 'doInBackground' récupère le tableau de noms. Une fois qu'un nom est choisi, créez une instance de l'autre sous-classe (en passant le nom sélectionné dans son constructeur) qui, dans 'doInBackground', effectue le second POST. –