Ответ 1
Основной поток приложения не всегда является потоком пользовательского интерфейса. Например, когда Activity
остановлен, вызывается onStop()
, следовательно, поток пользовательского интерфейса отбирается из этого Activity
и перемещается в другое действие в том же или другом приложении. Однако это не означает, что приложение больше не активно, оно может продолжать работать в фоновом режиме, пока оно не будет закрыто ни ОС, ни пользователем. Тогда, кто продолжает работать в фоновом режиме? Это основной поток, а не поток пользовательского интерфейса.
Что такое услуги
В Android Сервис - это компонент приложения, который может выполнять длительные операции в фоновом режиме в потоке пользовательского интерфейса. По фон, это означает, что у него нет пользовательского интерфейса. Сервис по умолчанию выполняется в главном потоке вызывающего процесса Components (и, следовательно, может ухудшить отзывчивость и вызвать ANR), следовательно, вы должен создать новый поток для выполнения длительных операций. Служба также может быть запущена в совершенно ином процессе.
В отличие от компонентов Activity, у Сервисов нет графического интерфейсы. Также приемники вещания предназначены для приема вещания. сообщения (широковещательная, многоадресная, одноадресная) и выполнять короткие задачи в то время как Сервисы предназначены для длительной обработки, например потоковой передачи. музыка, сетевые транзакции, файловый ввод/вывод, взаимодействие с базами данных и т.д. Когда служба запускается компонентом приложения, таким как действие он работает в фоновом режиме и продолжает работать, даже если пользователь переключается в другое приложение или сам исходный компонент уничтожен
Зачем пользоваться сервисом
Сервисы имеют более высокий приоритет, чем другие фоновые процессы и следовательно, менее вероятно, что Android прекратит его. Хотя может быть настроен на перезагрузку при наличии достаточных ресурсов очередной раз. Вы должны пройти через различные процессы и их приоритет/важный уровень в документации по процессам и потоки. Назначение им того же приоритета, что и на переднем плане безусловно, возможно, в этом случае он должен иметь видимый уведомление активно (обычно используется для служб воспроизведения музыки).
Используйте IntentService
, если вы не хотите возиться с управлением потоками самостоятельно. В противном случае используйте AsyncTasks
.
Пожалуйста, прочитайте эту превосходную статью, чтобы понять более подробно, а также прочитать этот ответ.