Android: WorkManager Обновление Повторите Интервал Runtime - PullRequest
0 голосов
/ 22 мая 2019

Я создал WorkRequest на WorkManager.Я только что использовал первый раз.

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

Возможно ли обновить время выполнения WorkRequest Interval при его изменении на стороне сервера.

Я попытался сделать следующее:

Мой код:

public static void startLocationTracker() {
        /**
         * Getting Default Minutes from General Params
         */
        List<GeneralParamMaster> generalParamMasters = CommonUses.getGeneralSettings();
        int repeatInterval = 0;
        if (generalParamMasters.size() > 0) {
            repeatInterval = TextUtils.isEmpty(generalParamMasters.get(0).getAutoLatLongTime()) ? DEFAULT_LOCATION_UPDATE_TIME : Integer.parseInt(generalParamMasters.get(0).getAutoLatLongTime());
        }
        PeriodicWorkRequest periodicWork = new PeriodicWorkRequest.Builder(MyWorker.class, repeatInterval, TimeUnit.MINUTES)
                .addTag("Location")
                .build();

        WorkManager.getInstance().enqueueUniquePeriodicWork("Location", ExistingPeriodicWorkPolicy.REPLACE, periodicWork);
}

Мой вопрос / путаница: *

  • Что если я вызову ту же функцию, что и выше?
  • Существует ли какой-либо метод для обновления времени выполнения интервала?

Ваша помощь будет принята.

Ответы [ 2 ]

1 голос
/ 22 мая 2019

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

Имейте в виду, что может случиться так, что вы замените PeriodWorker во время его работы, поскольку вы используете ExistingPeriodicWorkPolicy.REPLACE. Если другой работник, связанный с тем же UniqueName, работает во время вызова enqueueUniquePeriodicWork, работник будет отменен, а новый будет назначен.

По этой причине важно правильно обрабатывать отмену в вашем классе Worker, как описано в документации .

0 голосов
/ 24 мая 2019
  1. pfmaggi уже ответила на это выше;если вы вызовете этот метод во второй раз, он заменит ваш исходный WorkRequest.

  2. Вы можете обновить интервал, вызвав тот же метод, что и у вас, и использовать ExistingWorkPolicy.REPLACE с другой длинойвремени.

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