有没有一种方法可以在不等待每次执行至少15分钟的情况下,测试WorkManager Google API中的
周期性worker?我的意思是,这是一个DEBUG应用程序,我正在通过Android Studio运行它,我不想等待那么长时间来测试我的功能。
周期性worker?我的意思是,这是一个DEBUG应用程序,我正在通过Android Studio运行它,我不想等待那么长时间来测试我的功能。
你不能。
定期工作的最小间隔为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);
}
但是还有其他的方式来处理这个问题。
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
}
}
为了测试目的,您可以使用 work-testing 库,如下所示:https://developer.android.com/topic/libraries/architecture/workmanager/how-to/testing
具体来说,您需要查看如何测试定期执行的工作:https://developer.android.com/topic/libraries/architecture/workmanager/how-to/testing#periodic-work