WorkManager Google API:每执行一次定期工作要等待15分钟?

时间:2019-03-14 21:20:08

标签: android android-workmanager

是否可以通过WorkManager Google API测试 PERIODIC 工作程序,而不必每次执行都至少等待15分钟?

我的意思是,这是一个DEBUG应用程序,并且正在通过Android Studio运行它,我不想等待那么长时间来测试我的功能。

2 个答案:

答案 0 :(得分:2)

不能

定期工作的最小间隔为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 :(得分:1)

出于测试目的,您可以使用工作测试库,如下所示:https://developer.android.com/topic/libraries/architecture/workmanager/how-to/testing

具体地说,您想看看如何测试定期工作:https://developer.android.com/topic/libraries/architecture/workmanager/how-to/testing#periodic-work