WorkManager Google API: ждать 15 минут для каждого периодического выполнения работника? - PullRequest
2 голосов
/ 15 марта 2019

Есть ли способ протестировать работника PERIODIC из API Google WorkManager, не дожидаясь хотя бы 15 минут для каждого выполнения?

Я имею в виду, что это приложение DEBUG, и язапустить его через Android Studio, и я не хочу ждать так долго, чтобы протестировать свои функции.

Ответы [ 2 ]

2 голосов
/ 15 марта 2019

Вы не можете .

Периодическая работа имеет минимальный интервал 15 минут и не может иметь начальной задержки. Вы можете найти доказательства в классе WorkSpec.java.

 /**
     * Sets the periodic interval for this unit of work.
     *
     * @param intervalDuration The interval in milliseconds
     */
    public void setPeriodic(long intervalDuration) {
        if (intervalDuration < MIN_PERIODIC_INTERVAL_MILLIS) {
            Logger.get().warning(TAG, String.format(
                    "Interval duration lesser than minimum allowed value; Changed to %s",
                    MIN_PERIODIC_INTERVAL_MILLIS));
            intervalDuration = MIN_PERIODIC_INTERVAL_MILLIS;
        }
        setPeriodic(intervalDuration, intervalDuration);
    }

Но есть и другие способы справиться с этим.

  1. Напишите модульные тесты с использованием библиотеки work-testing и убедитесь, что ваша бизнес-логика работает должным образом.
  2. Используйте подход внедрения зависимостей и укажите OneTimeWorkRequest в режиме отладки, например:
interface Scheduler {
    fun schedule()
}

class DebugScheduler {
    fun schedule() {
        WorkManager.getInstance().enqueue(
            OneTimeWorkRequest.Builder(MyWorker::class.java)
                .build()
        )
    }
}

class ProductionScheduler {
    fun schedule() {
        // your actual scheduling logic
    }
}
1 голос
/ 16 марта 2019

В целях тестирования вы можете использовать библиотеку рабочего тестирования, как показано здесь: https://developer.android.com/topic/libraries/architecture/workmanager/how-to/testing

В частности, вы хотите посмотреть, как тестировать периодическую работу: https://developer.android.com/topic/libraries/architecture/workmanager/how-to/testing#periodic-work

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