#java #android #multithreading
#java #Android #многопоточность
Вопрос:
В моем приложении мне нужно загружать данные с сервера. Я помещаю HTTP-запрос в асинхронный поток. Как я могу использовать данные (== строка) в основном пользовательском интерфейсе?
Платформа — Android, а язык программирования — Java 1.6.
Ответ №1:
Предполагая, что вы на самом деле используете AsyncTask
, а не асинхронный поток (что бы это ни было).
Из документов Android AsyncTask
, часть «4 шага»:
- onPreExecute(), вызываемый в потоке пользовательского интерфейса перед выполнением задачи. Этот шаг обычно используется для настройки задачи, например, путем отображения индикатора выполнения в пользовательском интерфейсе.
- doInBackground(параметры …), вызываемый в фоновом потоке сразу после завершения выполнения onPreExecute(). Этот шаг используется для выполнения фоновых вычислений, которые могут занять много времени. На этот шаг передаются параметры асинхронной задачи. Результат вычисления должен быть возвращен на этом шаге и будет передан обратно на последний шаг. На этом шаге также можно использовать publishProgress(Прогресс …) для публикации одной или нескольких единиц прогресса. Эти значения публикуются в потоке пользовательского интерфейса на шаге onProgressUpdate (Прогресс …).
- onProgressUpdate(Прогресс …), вызывается в потоке пользовательского интерфейса после вызова publishProgress(прогресс …). Время выполнения не определено. Этот метод используется для отображения любой формы прогресса в пользовательском интерфейсе во время выполнения фоновых вычислений. Например, его можно использовать для анимации индикатора выполнения или отображения журналов в текстовом поле.
- onPostExecute(результат), вызываемый в потоке пользовательского интерфейса после завершения фоновых вычислений. Результат фонового вычисления передается на этот шаг в качестве параметра.
Похоже, вы ищете 4-й метод. Как указано выше: onPostExecute
будет вызываться в вашем потоке пользовательского интерфейса с результатом в качестве аргумента (тип задается как общий параметр задачи)