Если вы запускаете фоновый поток, который вы запускаете с Activity
, Android не знает, что вы выполняете фоновую работу в процессе ОС, на котором размещен ваш Activity
.Android может в любой момент убить процесс ОС, на котором размещена ваша Activity
.Если пользователь нажимает кнопку HOME, принимает телефонный звонок, открывает уведомление и переходит в другое приложение, Android может в любой момент отключить процесс ОС.Когда пользователь вернется в ваше приложение, Android создаст новый процесс ОС и заново создаст все соответствующие действия, но ваш фоновый поток безнадежно потерян.По этой причине в Android есть службы.
Если вы запускаете Service
для выполнения фоновой обработки, Service
также запускает фоновые потоки, но они контролируются.Ваш Service
говорит Android, что делать, если он убивает Service
во время обработки Intent
.Следовательно, ваш Service
может быть проинформирован и при необходимости перезапустить (или продолжить) фоновую обработку.Вы также можете запустить Service
в процессе ОС, отличном от процесса ОС, в котором выполняются ваши действия.Это не даст Android убить Service
, если пользователь удалит ваше приложение из списка недавних задач.
В более новых SDK для Android есть и другие механизмы, которые вы можете использовать, например JobScheduler
.