AsyncTask: использование веб-сервисов и потоков - PullRequest
0 голосов
/ 06 мая 2011

Я использую AsyncTask при нажатии кнопки, чтобы обновить экран.Ниже приведена последовательность событий, которые происходят при нажатии кнопки

  1. . Ход выполнения
  2. . Вызывается doInBackground и инициализируется поток, который вызывает веб-службу.Веб-сервис выбирает / загружает данные.Флаг прохождения / неудачи устанавливается после вызова веб-службы.

Моя проблема в том, что onPostExecute никогда не вызывается, и поэтому экран никогда не обновляется.И, во-вторых, к тому времени, когда данные загружаются и веб-служба устанавливает флаг, мой код уже нажал return stmt в doInBackground.

Вопрос в том, как остановить выполнение в моей асинхронной задаче, чтобы веб-служба завершила загрузку / выгрузку данных и, наконец, выполнила onPostexecute.

FYI Я также получаю следующее предупреждение в eclipse

Метод onPostExecute (логический) из типа Screen.ConnectWebService никогда не используется локально

private class ConnectWebService extends AsyncTask <Void, Void, Boolean>
        {
            private final ProgressDialog pd = new ProgressDialog(screen.this);

            protected void onPreExecute() {
                pd.show(Screen.this, "Sync", "Sync in progress",true,false);
            }


            protected Boolean doInBackground(Void... unused) {

                if (SyncInProgress == false)
                {

                    CallWSThread();//creates thread which  calls web service
                }
                        Log.d("doInBackground","doInBackground");
                return SyncStatus;
            }

            protected Void onPostExecute(boolean result)
            {   

                pd.dismiss();
                if (result==true) drawRadioButtons();

                 return null;
            }

        }

Ответы [ 2 ]

4 голосов
/ 06 мая 2011

Должно быть:

protected Void onPostExecute(Boolean result)
1 голос
/ 06 мая 2011

Как отметил djg, в объявлении вашего метода есть опечатка. Вы можете избежать подобных ошибок, используя аннотацию @ Override при реализации методов из суперкласса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...