Запускать мою фоновую службу в определенное время и периодически с помощью JobScheduler

Я хочу запустить фоновую службу для получения новых данных каждые 24 часа, начиная с 23:45, используя JobScheduler, проблема в том, что я не могу найти, как сообщить jobSheduler, что моя служба должна запускаться в 23:45?

 private void constructJob() {
    JobInfo.Builder builder = new JobInfo.Builder(JOB_ID, new ComponentName(this, TestService.class));
    builder.setPeriodic(24*60*60*1000) //24 hours * 60 min * 60 sec * 1000
    .setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)
            .setPersisted(true)
            .build();

}

PS: я избегаю использования AlarmManager, я хочу воспользоваться преимуществами функций API jobScheduler, таких как: * объединение заданий для снижения расхода заряда батареи. *упрощает обработку загрузки, так как автоматически обрабатывает ненадежность сети. * Пережить перезагрузку приложения


person Chiheb.Zouaghi    schedule 06.10.2017    source источник


Ответы (1)


Я не могу найти, как сообщить jobSheduler, что моя служба должна начать работать в 23:45?

Это потому, что это не поддерживается. JobScheduler периодические задания спроектированы так, чтобы быть неточными для максимальной экономии энергии.

person CommonsWare    schedule 06.10.2017
comment
спасибо за ваш ответ, во время поиска решения я нашел это обсуждение ссылка какой-то обходной путь для выполнения работы (ответ Ansh1234), но идея все еще не очень ясна, не могли бы вы помочь мне понять ее - person Chiheb.Zouaghi; 06.10.2017