Android Widget: служба против асинхронной задачи - PullRequest
2 голосов
/ 10 марта 2011

Когда речь идет о виджетах, можем ли мы вызвать асинхронную задачу из службы?

В настоящее время у меня есть крошечное приложение, которое просматривает результаты спортивных матчей и отображает их. Основной класс вызывает асинхронную задачу. Асинхронная задача вызывает 2 процедуры. Первый, который анализирует XML-файл и получает ссылку html. Второй, чтобы прочитать этот HTML-файл. Теперь я хочу преобразовать это приложение в виджет домашнего экрана.

Могу ли я вызвать мою асинхронную задачу из службы? Любые указатели на примеры?

Пожалуйста, помогите.

С уважением, Sam

Ответы [ 3 ]

4 голосов
/ 10 марта 2011

Вам не нужно создавать AsyncTask в Сервисе. Служба уже работает в фоновом потоке, поэтому вы можете выполнять любые интенсивные задачи, которые вы выполняли в doInBackground в Службе. Вы все еще должны иметь возможность вызывать AsyncTask в Службе, но вам не нужно использовать AsyncTask в этот момент.

Здесь - пример виджета со службой.

0 голосов
/ 12 апреля 2012

Вот основные отличия:

Потоки или задача Async выполняют свои задачи в фоновом потоке, поэтому они не блокируют основной поток, в то время как служба выполняет свою работу в основном потоке. поэтому, если служба выполняет интенсивную задачу, такую ​​как вызов веб-службы, она может блокировать основной поток до его завершения. Поэтому для интенсивных задач служба должна запускать свою работу в фоновом потоке.

Сводка, поток (асинхронная задача) выполняет задание в фоновом режиме (не блокирует основной поток), а служба может блокировать основной поток до его завершения.

0 голосов
/ 10 марта 2011

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

...