Исключение потока Android-индикатора - PullRequest
0 голосов
/ 07 сентября 2011

Вопрос, возникший в результате моей первой попытки использования объекта Async.

У меня есть основное действие, в котором некоторые TextViews были созданы программно и добавлены в LinearLayout.Также при нажатии этой кнопки создается экземпляр объекта AsyncTask, и результаты получаются в методе doInBackGround.Как следует передать строки результата в TextViews?

a) путем вызова методов SetText этих TextViews из метода onPostExecute, б) с использованием намерений и метода onActivityResult в основном действии;подсказка была бы хороша!)

Спасибо!

Ответы [ 3 ]

1 голос
/ 07 сентября 2011

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

*.1005 * Затем вы можете вызывать каждый TextView метод setText(...) в методе onPostExecute вашего AsyncTask.Или, что более удобно, вы можете обновлять каждое представление по мере получения результата, используя методы publishProgress(...) и onProgressUpdate(...) (см. Документацию AsyncTask ) во время фоновых вычислений, вместо того, чтобы ждать, покаконец.

Просто имейте в виду, что вы можете вызывать setText(...) только из методов onPreExecute, onProgressUpdate и onPostExecute, поскольку (по крайней мере, так кажется из вашего объяснения) представлениябыли созданы в потоке пользовательского интерфейса, поэтому их можно изменять только из того же потока, в котором эти методы выполняются.

1 голос
/ 07 сентября 2011

При использовании AsyncTask вы можете использовать метод doInBackground для обработки и onPostExecute для обновления любых изменений пользовательского интерфейса.Итак, если вам нужно использовать AsyncTask, я бы выбрал вариант A .

0 голосов
/ 07 сентября 2011

Сделайте TextViews частными и определите их в doInBackground, затем вы можете просто вызвать метод setText в onPostExecute или как последнюю вещь в doInBackground, но я бы порекомендовал onPostExecute.

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