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