Добавление баллов к принятому ответу:
Смотрите использование IntentService в Android API. например:
public class SimpleWakefulService extends IntentService {
public SimpleWakefulService() {
super("SimpleWakefulService");
}
@Override
protected void onHandleIntent(Intent intent) { ...}
Чтобы создать компонент IntentService для вашего приложения, определите класс, который расширяет IntentService, и в нем определите метод, который переопределяет onHandleIntent ().
Также см. Исходный код IntentService, его конструктор и методы жизненного цикла, такие как onStartCommand ...
@Override
public int More ...onStartCommand(Intent intent, int flags, int startId) {
onStart(intent, startId);
return mRedelivery ? START_REDELIVER_INTENT : START_NOT_STICKY;
}
Совместное использование AsyncTask является одним из лучших подходов для многих случаев, когда полезная нагрузка невелика. или просто создайте класс, расширяющий IntentSerivce. Начиная с версии 4.0 Android, все сетевые операции должны выполняться в фоновом режиме, иначе сборка / сборка приложения завершится неудачно. отдельный поток от пользовательского интерфейса. Класс AsyncTask предоставляет один из самых простых способов запуска новой задачи из потока пользовательского интерфейса. Более подробное обсуждение этой темы смотрите в блоге.
из руководства разработчика Android :
IntentService - это базовый класс для служб, которые обрабатывают асинхронные запросы (выраженные как Intents) по требованию. Клиенты отправляют запросы через вызовы startService (Intent); служба запускается по мере необходимости, обрабатывает каждое намерение, в свою очередь, используя рабочий поток, и останавливается, когда заканчивается его работа.
Шаблон проектирования, используемый в IntentService
: Этот шаблон «обработчик рабочей очереди» обычно используется для выгрузки задач из основного потока приложения. Класс IntentService существует, чтобы упростить этот шаблон и позаботиться о механике. Чтобы использовать его, расширьте IntentService и внедрите onHandleIntent (Intent). IntentService получит Intents, запустит рабочий поток и остановит службу соответствующим образом.
Все запросы обрабатываются в одном рабочем потоке - они могут занимать столько времени, сколько необходимо (и не будет блокировать основной цикл приложения), но одновременно обрабатывается только один запрос.
Класс IntentService предоставляет простую структуру для выполнения операции в одном фоновом потоке. Это позволяет ему обрабатывать длительные операции, не влияя на отзывчивость вашего пользовательского интерфейса. Кроме того, IntentService не подвержен влиянию большинства событий жизненного цикла пользовательского интерфейса, поэтому он продолжает работать при обстоятельствах, приводящих к отключению AsyncTask.
IntentService имеет несколько ограничений:
Он не может напрямую взаимодействовать с вашим пользовательским интерфейсом. Чтобы поместить его результаты в пользовательский интерфейс, вы должны отправить их в Activity. Рабочие запросы выполняются последовательно. Если операция выполняется в IntentService, и вы отправляете ему еще один запрос, запрос ожидает завершения первой операции. Операция, выполняемая на IntentService, не может быть прервана. Однако в большинстве случаев
IntentService является предпочтительным способом для простых фоновых операций
**
Библиотека залпа
Есть библиотека volley-library для разработки приложений для Android.
. Исходный код доступен для всех на GitHub.
Официальная документация для Android по рекомендациям для фоновых заданий : помогает лучше понять намерение службы, потока, обработчика, службы. а также выполнение сетевых операций
IntentService is used for short tasks (etc) and a service is for long ones
где ты это прочитал?