Android - Запуск в фоновом режиме - Сервис против стандартного Java-класса - PullRequest
5 голосов
/ 18 июня 2010

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

, создающим Сервис для выполнения работы и имеющим Activity, запускающим Service VS.Создание стандартного Java-класса для выполнения работы и создание Activity для создания объекта класса и вызова методов для выполнения работы в отдельном потоке.

Ответы [ 3 ]

5 голосов
/ 18 июня 2010

Создание собственных потоков - это излишне, есть решения для этого, поэтому вам не нужно беспокоиться о сложных частях параллелизма.Взгляните на AsyncTask или IntentService .Если вы обращаетесь за услугой, имейте в виду, что ваша служба может быть убита в любое время.

3 голосов
/ 18 июня 2010

Что ж, Android предоставляет несколько полезных методов для простого создания рабочих потоков. Посмотрите на определение класса Looper . Он позволяет отправлять события через обработчик для выполнения одного за другим в другом потоке или передавать сообщения между различными потоками.

Услуга не представляет ничего особенного. Создание службы - это просто способ сообщить ОС, что вам нужно выполнить какую-то работу, даже если ваша активность не видна.

2 голосов
/ 18 июня 2010

В зависимости от приложения, которое вы создаете, это может быть не вариант.

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

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

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

Кстати, IntentService - это услуга.

...