Есть несколько API, которые вы можете использовать в Android для этого.
Из официального документа Android -
Рассматривая выполнение работы вне основного потока, учитывайте три фактора:
Может ли работа быть отложена или она должна произойти точно по расписанию? Например, если вам нужно получить какие-то данные из сети в ответ на нажатие пользователем кнопки, эту работу необходимо выполнить немедленно. Однако, если вы хотите загрузить свои журналы на сервер, эту работу можно отложить, не влияя на производительность вашего приложения или ожидания пользователей.
Как только работа начнет выполняться, должна ли ОС попытаться поддержать процесс приложения? Например, декодирование и отображение растрового изображения - это то, что должно произойти, только когда приложение находится на переднем плане, а процесс активен. Однако музыкальный проигрыватель должен продолжать воспроизводить музыку, даже если приложение находится в фоновом режиме и активно не используется.
Начинается ли работа в ответ на срабатывание системы? Этими триггерами могут быть такие вещи, как состояние сети, состояние батареи, уровни памяти и т. Д. Например, вам может потребоваться подождать, чтобы установить связь с вашим сервером, пока вы не выйдете из режима полета. В этом случае, если процесс приложения не работает, вы можете захотеть воссоздать его, когда устройство снова подключится к сети, чтобы вы могли выполнять свою работу.
В зависимости от этих факторов выберите способ выполнения задач
Вы можете проверить, какой метод использовать здесь
developer.android.com/guide/background