Проблемы Android с AsyncTask и InputStream

Я пытался выяснить это самостоятельно довольно долго ... методом проб / ошибок, а также исследованиями, но я просто могу 'Кажется, я понял это. Я'Мне очень плохо с Async и сетевыми подключениями и прочее, так что это может быть что-то простое, что ям над взглядом. Тем не менее, я'Я вставлю некоторые соответствующие примеры кода и объяснения.

Быстрый фон моей проблемы. Я'Я работаю с Rotten Tomatoes API для моего приложения и использую GSON для анализа их данных. Я изначально был нацелен на 2.3, и это работало нормально. Тогда я решил поддержать ICS и, конечно же, столкнулся снет сетевой операции в потоке пользовательского интерфейса " - поэтому я начал вникать в AsyncTask.

Вот мой метод InputStream:

private InputStream retrieveStream(String url) {

    DefaultHttpClient client = new DefaultHttpClient();

    HttpGet getRequest = new HttpGet(url);

    try {

        HttpResponse getResponse = client.execute(getRequest);
        final int statusCode = getResponse.getStatusLine().getStatusCode();

        if (statusCode != HttpStatus.SC_OK) {
            Log.w(getClass().getSimpleName(),
                    "Error " + statusCode + " for URL " + url);
            return null;
        }

        HttpEntity getResponseEntity = getResponse.getEntity();
        return getResponseEntity.getContent();
    }
    catch (IOException e) {
        getRequest.abort();
        Log.w(getClass().getSimpleName(), "Error for URL " + url, e);
    }

    return null;
}

Который работал нормально в моей основной деятельности, и теперь вызывает у меня проблемы при попыткеперерабатывать' это в AsyncTask. Я'я так называю это:

InputStream source = retrieveStream( url parameter );

Затем я попытался переместить этот метод в мой класс AsyncTask и вызвать его так:

private PerformMovieSearch performSearch = new PerformMovieSearch(this);
InputStream source = performSearch.retrieveStream(movieQueryUrl);

Но это неВырежьте это, все равно получите ошибку о выполнении сетевых действий в пользовательском интерфейсе. Что мне нужно понять, это как позвонитьretrieveStream» от AsyncTask я думаю. В настоящее время этот класс выглядит следующим образом:}

package net.neonlotus.ucritic;

[imports]

public class PerformMovieSearch extends AsyncTask {

private final Context context;
private ProgressDialog progressDialog;


public PerformMovieSearch(Context context){
    this.context = context;
}


@Override
protected String doInBackground(String... urls) {
    retrieveStream(urls[0]);

    return null;

}

@Override
protected void onPreExecute() {
    progressDialog= ProgressDialog.show(context, "Please Wait","Searching movies", true);

}


@Override
protected void onPostExecute(String result) {
    super.onPostExecute(result);
    progressDialog.dismiss();

    MyActivity.mListAdapter.notifyDataSetChanged();
}

public InputStream retrieveStream(String url) {

    DefaultHttpClient client = new DefaultHttpClient();
    HttpGet getRequest = new HttpGet(url);

    try {
        HttpResponse getResponse = client.execute(getRequest);
        final int statusCode = getResponse.getStatusLine().getStatusCode();

        if (statusCode != HttpStatus.SC_OK) {
            Log.w(getClass().getSimpleName(),
                    "Error " + statusCode + " for URL " + url);
            return null;
        }

        HttpEntity getResponseEntity = getResponse.getEntity();
        return getResponseEntity.getContent();
    } catch (IOException e) {
        getRequest.abort();
        Log.w(getClass().getSimpleName(), "Error for URL " + url, e);
    }

    return null;
}

"doinbackground» это то, что нужно изменить ... но я могуКажется, я не нашел прямой способ заставить это работать должным образом. Я выполнял с помощью

new PerformMovieSearch(this).execute(movieQueryUrl);

Я знаю, что это много вещей, которые могут сбить с толку ... но если кто-нибудь знает, как по существу выполнять метод retrieveStream асинхронно, это было бы здорово. Как я уже говорил, я много чего перепробовал, много исследовал, просто не смог придумать ничего полезного.

Ответы на вопрос(2)

Ваш ответ на вопрос