在 PeriodicTimeRequest
最短周期时间为 15 分钟。我想将它从 15 分钟减少到不到 15 分钟。我该怎么做?
最佳答案
一个简单的答案是没有 , 您不能将时间减少到小于 MIN_PERIODIC_INTERVAL_MILLIS 硬编码为 15 分钟。
但是,您可以比 MIN_PERIODIC_INTERVAL_MILLIS(即 15 分钟)更早地测试 PeriodicWorkRequest。
为此,您需要 WorkManagerTestInitHelper
可用 androidx.work.testing
.
首先,在您的应用程序或模块的 build.gradle 文件中添加以下依赖项:
//Current stable release is 2.3.4
androidTestImplementation "androidx.work:work-testing:2.3.4
接下来需要使用
setPeriodDelayMet
TestDriver
提供的方法可用于指示间隔已完成并比 MIN_PERIODIC_INTERVAL_MILLIS(15 分钟)更早地执行 PeriodicWorkRequest。示例代码:
@Test
public void testPeriodicWork(Context context) throws Exception {
// Setup input data
Data input = new Data.Builder().put(KEY_1, 1).put(KEY_2, 2).build();
// Create periodic work request
PeriodicWorkRequest request = new PeriodicWorkRequest.Builder(MyWorker.class, 15, TimeUnit.MINUTES)
.setInputData(input)
.build();
// Enqueue periodic request
WorkManager.getInstance(context).enqueueUniquePeriodicWork(WORKER_TAG, ExistingPeriodicWorkPolicy.REPLACE, request);
// Initialize testDriver
TestDriver testDriver = WorkManagerTestInitHelper.getTestDriver();
// Tells the testing framework the period delay is met, this will execute your code in doWork() in MyWorker class
testDriver.setPeriodDelayMet(request.getId());
}
您可以在 https://developer.android.com/topic/libraries/architecture/workmanager/how-to/integration-testing#periodic-work 找到更多关于测试 PeriodicWorkRequest 的信息。
在 https://developer.android.com/reference/androidx/work/testing/WorkManagerTestInitHelper 上了解有关测试 WorkManager 的更多信息和 https://developer.android.com/reference/androidx/work/testing/TestDriver
关于android - WorkManager 中如何减少 PeriodicWorkManager 的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55135999/