Ответ 1
Service
получают более высокий приоритет, чем Activity
на уровне процесса. Когда память низкая, система Android будет приоритизировать Service
поверх Activity
s, сделав Service
идеальным вариантом для длительных задач. Более подробную информацию см. В статье под названием Процессы и темы.
Кроме того, когда вы указываете следующее в своем исходном сообщении:
Фрагменты могут использоваться без определения пользовательского интерфейса. Для фоновой обработки рекомендуется использовать фрагменты без головы.
Откуда вы это цитируете? Я согласен с первым предложением, но второе предложение является слишком общим. Для коротких задач (например, выполнения HTTP-запросов и т.д.) Фрагменты без головы работают нормально. Однако для выполнения длительной фоновой обработки (например, для загрузки очень большого файла и т.д.) Фрагмент без головы может быть не таким, каким вы хотите. Например, если вы использовали фрагмент без головы для выполнения долговременной задачи, и пользователь нажал кнопку "Назад", это приведет к уничтожению как Activity
, так и его голова Fragment
.
Подводя итог, служба является фоновым компонентом, который существует независимо от Activity
, что означает, что он может продолжать работать в фоновом режиме, даже если Activity
, который запустил службу, был уничтожен. С другой стороны, безгласный фрагмент всегда будет иметь связанный родительский элемент Activity
. Если Activity
, который содержит фрагмент, будет уничтожен системой, тогда фрагмент также должен быть убит.