Не удается периодически запускать задачу с помощью ScheduledThreadPoolExecutor в Android - PullRequest
0 голосов
/ 10 января 2019

Мое приложение - приложение запуска, мне нужно периодически запускать задачу, поэтому я написал код с помощью ScheduledThreadPoolExecutor, но заметил, что иногда он работает нормально, но иногда он не работает, я не понимаю, почему это происходит. После перезагрузки устройства оно работает нормально, но на некоторых устройствах оно не запускается.

ScheduledThreadPoolExecutor executor_ = new ScheduledThreadPoolExecutor(1);
    executor_.scheduleWithFixedDelay(new

                                             Runnable() {
                                                 @Override
                                                 public void run() {
                                                     try {
                                                         //Hitting an api
                                                     }
                                                 }catch(
                                                 Exception e)

                                                 {
                                                     e.printStackTrace();
                                                 }
                                             }
},10000,6000000,TimeUnit.MILLISECONDS);

1 Ответ

0 голосов
/ 11 января 2019

Зависит от вашей версии Android, но если вы хотите периодически запускать задачу независимо от того, открыто приложение у пользователя или нет, использование JobScheduler обычно лучше для батареи, хотя есть и другие варианты (https://developer.android.com/topic/performance/scheduling). Пример:

        ((JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE)).schedule(new JobInfo.Builder(MY_JOB_ID, new ComponentName(context, MyJobService.class))
            .setPeriodic(6000000)
        .build());

Тогда код для вызова API будет в классе MyJobService, метод onStartJob.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...