Pobieranie zwróconego ciągu z AsyncTask w Androidzie

Chcę pobrać zawartośćten plik i zapisz to na sznurku.

Próbowałem użyć AsyncTask (na podstawieta odpowiedź) i oto moja klasa.

class RetreiveURLTask extends AsyncTask<Void, Void, String> {

    private Exception exception = null;
    public String ResultString = null;

    protected String doInBackground(Void ... something) {
        URL url;
        try {
            url = new URL("http://stream.lobant.net/ccfm.info");
            HttpURLConnection urlConnection;
            urlConnection = (HttpURLConnection) url.openConnection();
            InputStream in = new BufferedInputStream(urlConnection.getInputStream());
            String stream_url = IOUtils.toString(in, "UTF-8");
            urlConnection.disconnect();

            return stream_url;

        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        } catch (Exception e) {
            this.exception = e;
            return null;
        }
    }

    protected void onPostExecute(String stream_url) {
    // TODO: check this.exception 
    // TODO: do something with the feed
    if (this.exception != null)
        this.exception.printStackTrace();

    this.ResultString = stream_url;
    }
}   

Próbowałem użyć mojej klasy AsyncTask w następujący sposób:

  AsyncTask<Void, Void, String> stream_task = new RetreiveURLTask().execute();
  String stream_url = stream_task.ResultString;

ale ResultString nie jest rozpoznawany.

Jestem zdezorientowany, jak to wszystko działa. Ponieważ AsyncTask działa w tle, nawet jeśli mógłbym przypisać mój ciąg do jednej ze zmiennych publicznych, nie ma gwarancji, że będzie on ważny, gdy dokonam przypisania. Nawet gdybym używał jakiejś funkcji getResult (), musiałbym wiedzieć, kiedy ją wywołać, aby kod zakończył wykonywanie.

Jak to zwykle się robi?

(Czy mój kod odczytu http jest w porządku?)

Moja umiejętność: mogę kodować, ale jestem nowym użytkownikiem Androida.

questionAnswers(4)

yourAnswerToTheQuestion