Sil*_*ert 3 android-workmanager
对于 OneTimeWorkRequest,我们可以使用 WorkContinuation 来确保如果作业已经被安排,我们可以保留或替换它。PeriodicWorkRequest 没有这样的选项,因此每次创建我的主要活动时都会创建一个新作业,一段时间后我会收到此异常。
java.lang.IllegalStateException: Apps may not schedule more than 100 distinct jobs
Run Code Online (Sandbox Code Playgroud)
所以我正在尝试以下内容来创建一个“独特的周期性作品”
public void schedule(){
Constraints constraints = new Constraints.Builder().setRequiresBatteryNotLow(true).build();
OneTimeWorkRequest zombieSpawnWorker = new OneTimeWorkRequest.Builder(ZombieSpawnWorker
.class).setInitialDelay(15, TimeUnit.MINUTES).setConstraints(constraints).addTag(ZombieSpawnWorker.TAG).build();
this.setUuid(zombieSpawnWorker.getId());
WorkManager.getInstance().beginUniqueWork(TAG,
ExistingWorkPolicy.KEEP,
OneTimeWorkRequest.from(ZombieSpawnWorker.class));
}
Run Code Online (Sandbox Code Playgroud)
然后在工作结束时再次调用此方法
public WorkerResult doWork() {
try {
//work to be done
} catch (Exception e) {
Log.e(TAG,e.getLocalizedMessage());
return WorkerResult.FAILURE;
}
schedule();
return WorkerResult.SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)
小智 5
另一种解决方法是将标记添加REQUEST_TAG到PeriodicWorkRequestBuilder,然后WorkManager.getInstance().cancelAllWorkByTag(REQUEST_TAG)在将定期请求加入队列之前调用。
| 归档时间: |
|
| 查看次数: |
2338 次 |
| 最近记录: |