Renvoyer des données à partir de la classe AsyncTask
Comment puis-je obtenir les données de mon AsyncTask? Mon MainActivity est l'appel de la DataCall.getJSON fonction qui déclenche l'AsyncTask mais je ne suis pas sûr de savoir comment récupérer les données de l'Activité d'origine.
MainActivity avec appel à la DataCall qui doit renvoyer une chaîne de caractères et l'enregistrer dans state_data
String state_data = DataCall.getJSON(spinnerURL,spinnerContentType);
DataCall:
public class DataCall extends Activity {
private static final String TAG = "MyApp";
private class DownloadWebPageTask extends AsyncTask<String, Void, String> {
protected String doInBackground(String... urls) {
String response = "";
for (String url : urls) {
DefaultHttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
try {
HttpResponse execute = client.execute(httpGet);
InputStream content = execute.getEntity().getContent();
BufferedReader buffer = new BufferedReader(
new InputStreamReader(content));
String s = "";
while ((s = buffer.readLine()) != null) {
response += s;
}
} catch (Exception e) {
e.printStackTrace();
}
}
return response;
}
protected void onPostExecute(String result) {
//THIS IS WHERE I NEED TO RETURN MY DATA TO THE MAIN ACTIVITY. (I am guessing)
}
}
public void getJSON(String myUrlString, String contentType) {
DownloadWebPageTask task = new DownloadWebPageTask();
task.execute(new String[] { "http://www.mywebsite.com/" + myUrlString });
}
}
pourquoi n'essayez-vous pas un Service appel RESTE modèle? au lieu de faire la demande sur une Activité dépendante fil?
OriginalL'auteur Denoteone | 2011-10-01
Vous devez vous connecter pour publier un commentaire.
Pour moi, l'essentiel était de créer une classe appelée URLWithParams ou quelque chose parce que AsyncTask permettra à seulement 1 type à être envoyé, et j'ai besoin de l'URL et les paramètres de la requête HTTP.
puis-je l'envoyer à un JSONClient:
Ensuite appeler à partir de ma classe principale comme ce
OriginalL'auteur Thunder Rabbit
modifier votre
AsyncTask
comme ci-dessous:et à utiliser dans votre Activité
NOTE: Pour les gens qui sont la lecture de ce.
Veuillez considérer la présente post pour le meilleur et peut-être de mise en oeuvre.
Pour cela, comme je l'ai mentionné, vous pouvez passer des variables par le constructeur de
GetData
et de les rendre champ deGetData
classe pour autre utilisation de ces méthodes.+1 pour une belle réponse.
Salut Adil, le Thread Qui va gérer gérera la dataDownloadedSuccessfully() ? Il sera l'AsyncTask thread ou un thread d'INTERFACE utilisateur? Je voudrais que le thread d'INTERFACE utilisateur pour gérer mon résultat de sorte que je puisse mettre à jour l'INTERFACE utilisateur. Des idées à ce sujet?
Hay @AKh
onPostExecute()
est appelée sur le thread de l'INTERFACE utilisateur, donc si vous mettezdataDownloadedSuccessfully()
à l'intérieur deonPostExecute()
, il sera appelé sur le thread de l'INTERFACE utilisateur et vous pouvez effectuer des mises à jour de l'INTERFACE utilisateur.OriginalL'auteur Adil Soomro
Bien que je suis en désaccord création d'une nouvelle activité pour cette tâche simple, il n'y a
pour obtenir des données à partir d'une autre activité.
Vérifier cette. Vous pouvez stocker vos données à l'Intention des figurants. Mais si vous avez une grande quantité de données que vous mieux de l'écrire dans un fichier le résultat de l'activité qui est fait de télécharger et alors de lire le fichier.
OriginalL'auteur weakwire
Sérialiser et puis de le lire. La seule façon que je suis au courant de.
OriginalL'auteur asenovm
Certaines options:
a) de Rendre votre bean mettre en œuvre
Serializable
interface, vous pouvez alors passer votre fève par l'Intention.b) mettre en Œuvre
Application
interface (vous avez besoin de faire une entrée dans le manifeste), Ont setter\méthode de lecture dans votre classe d'Application. Vous pouvez définir vos haricots dans l'Application deAsyncTask
et le récupérer plus tard à partir de l'Activité.OriginalL'auteur Siddhartha
Désolé de répondre si tard, je pense qu'en ce moment, vous pourriez avoir résolu ce problème. quand j'étais à la recherche de quelque chose d'autre, je suis tombé sur votre question. Je suis en collant un lien ici qui pourrait être utile pour les autres.
OriginalL'auteur Jayanth N