Android-запрос веб-службы в режиме реального времени - PullRequest
0 голосов
/ 23 июня 2011

Я написал приложение, которое запрашивает веб-сервис, который я написал (который возвращает данные JSON).В настоящее время мое приложение обрабатывает вызов веб-службы с помощью AsyncTask и обновляет TableLayout, используя полученные данные.Я хочу, чтобы мое приложение регулярно (каждую секунду или около того) вызывало этот веб-сервис и отображало данные в БД, поскольку они постоянно обновляются.Как я могу сделать это без блока потока пользовательского интерфейса?

В настоящее время все работает так, как пользователь нажимает кнопку «Перейти», и AsyncTask отображает диалоговое окно «загрузка» во время обработки запроса.Я бы хотел, чтобы они один раз нажали кнопку «Перейти» и обновили данные в макете.Я не уверен, что это лучший способ создать архитектуру.

Ответы [ 2 ]

1 голос
/ 27 июня 2011

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

Вместо этого вы можете создать AsyncTask, который после каждого запроса, возвращаемого веб-службой, обновляет некоторые внутренние структуры данных и затем вызывает publishProgress(), ожидает соответствующее количество времени, а затем отправляет новый запрос в Интернет. оказание услуг. В onPublishProgress() код должен затем получить новую информацию из запроса от любых используемых внутренних структур (не забудьте использовать блокировку здесь для синхронизации доступа) и обновить интерфейс пользователя.

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

0 голосов
/ 23 июня 2011

Вы можете использовать Обработчик , который может инициировать новый запрос AsyncTask через каждую секунду.

...