Igo*_*nko 6 android android-workmanager
在应用程序启动时,我想启动将永久工作的服务,但是当用户再次打开应用程序时,它会重复.
PeriodicWorkRequest.Builder sendDataBuilder = new PeriodicWorkRequest.Builder(SendConnectionMetricsWorker.class, Constants.REPEAT_TIME_INTERVAL_IN_HOURS, Constants.REPEAT_TIME_INTERVAL_UNITS)
.setConstraints(new Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build());
PeriodicWorkRequest periodicWorkRequest = sendDataBuilder
.build();
WorkManager.getInstance().enqueue(periodicWorkRequest);
Run Code Online (Sandbox Code Playgroud)
Sag*_*gar 19
你可以用enqueueUniquePeriodicWork而不是enqueue.根据文档:
此方法允许您将唯一命名的PeriodicWorkRequest排入队列,其中一次只能激活特定名称的一个PeriodicWorkRequest.例如,您可能只希望一个同步操作处于活动状态.如果有一个待处理,您可以选择让它运行或用新工作替换它.uniqueWorkName唯一标识此PeriodicWorkRequest.
您可以按如下方式实现:
PeriodicWorkRequest.Builder sendDataBuilder = new PeriodicWorkRequest.Builder(SendConnectionMetricsWorker.class, Constants.REPEAT_TIME_INTERVAL_IN_HOURS, Constants.REPEAT_TIME_INTERVAL_UNITS)
.setConstraints(new Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build());
PeriodicWorkRequest periodicWorkRequest = sendDataBuilder
.build();
WorkManager.getInstance().enqueueUniquePeriodicWork("Send Data", ExistingPeriodicWorkPolicy.KEEP,periodicWorkRequest);
Run Code Online (Sandbox Code Playgroud)
注意:
ExistingPeriodicWorkPolicy.REPLACE确保如果有标有uniqueWorkName的待处理工作,它将被取消并运行新工作.ExistingPeriodicWorkPolicy.KEEP仅当没有标记为uniqueWorkName的待处理工作时,才会运行新的PeriodicWorkRequest.
| 归档时间: |
|
| 查看次数: |
2884 次 |
| 最近记录: |