2011-01-10 3 views
3

У меня есть активность, которая извлекает информацию с удаленного сервера и отображает ее в TableLayout. Функция, которая извлекает информацию с сервера, имеет свой собственный тайм-аут, а исключение генерируется при превышении таймаута.Длинные операции над Activity onCreate()

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

Проблема: Я поместил код, который выполняет все функции, описанные выше, в функции onCreate(). На экране эмулятора ничего не отображается, так как функция onCreate() еще не закончена ...

Я также попытался поместить код в функцию onStart() ... такие же нежелательные результаты ...

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

Как я реализовать желаемое поведение ??

Спасибо.

ответ

3
  • Создать класс, реализующий Runnable и поставить всю свою логику нагрузки там. Вызов функции в деятельности, когда закончена (позволяет сказать onFinished(params...))
  • Создание пользовательского интерфейса Handler и получить обработчик для обновления пользовательского интерфейса в onFinished(params...)
  • Создать нить onCreate и запустить его там, чтобы позвонить своему Runnable.