ScheduledExecutorService для длительного времени: schedule VS scheduleAtFixedRate

176
25 февраля 2022, 05:00

Как лучше организовать заведомо долгий отложенный поток?

Насколько сильно мучается телефон выполняя каждый из этих потоков?

А если для случая #2 секунды сменить на милисекунды? Наносекунды?

p.s. это выполняется в ForegroundService

1. Отложить выполнение кода на 24 часа
ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
service.schedule(new Runnable() {
// JOB
}, 24, TimeUnit.HOURS);

ИЛИ

2. Каждую секунду сравнивать текущее VS целевое время (изначально между ними разница в 24 часа)
ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
service.scheduleAtFixedRate(new Runnable() {
if (текущее время >= выбранного времени){
    //JOB
}   
}, 0, 1, TimeUnit.SECONDS);
Answer 1

Для вашей цели следует использовать инструменты, которые предоставляет Android для запуска отложенных задач, например AlarmManager, JobScheduler или библиотеку WorkManager. Дело в том, что ForegroundService вообще не даст телефону уснуть в течении всего этого времени, что вызовет заметный расход батареи вашим приложением на фоне других. ScheduledExecutorService это чисто класс Java и больше предназначен для бекенд приложений, которые выполняются постоянно. Android приложения не должны выполняться постоянно если нет для этого необходимости (а ее нет, если нужно просто ждать). Поэтому лучше предоставить запуск запланированной задачи Android.

READ ALSO
Улучшения ввода/вывода для алгоритма

Улучшения ввода/вывода для алгоритма

Решил порешать задачи которые готовит ЯндексНаткнулся на первые трудности в виде задачи про дубликаты:

114
Помогите разобраться с версткой

Помогите разобраться с версткой

Использую библиотеку materializecssНа главной странице проекта вывожу раскрывающиеся карточки, в три колонки

79
Возможно ли открыть папку на хостинге

Возможно ли открыть папку на хостинге

Возможно ли открыть папку на хостинге через opendir()

92
Авторизация с помощью приложения

Авторизация с помощью приложения

Всем приветМогли бы подсказать где копать? Есть приложение, созданное и есть Доска объявлений (это мои приложения)

81