private void testCancelLast() { mJobManager.cancel(mLastJobId); }
@Test public void testScheduleAndCancel() { JobRequest request = DummyJobs.createOneOff(); int jobId = request.schedule(); assertThat(manager().getJobRequest(jobId)).isNotNull(); assertThat(manager().getJob(jobId)).isNull(); assertThat(manager().cancel(jobId)).isTrue(); assertThat(manager().getAllJobRequests()).isEmpty(); assertThat(manager().getAllJobs()).isEmpty(); request.schedule(); assertThat(manager().getAllJobRequests()).hasSize(1); assertThat(manager().cancelAll()).isEqualTo(1); assertThat(manager().getAllJobRequests()).isEmpty(); assertThat(manager().getAllJobs()).isEmpty(); }
for (JobRequest request : requests) { if (!request.isExact() || request.getStartMs() != JobRequest.START_NOW) { manager.cancel(request.getJobId());
@Override public void delete(JobRequest request) { manager().cancel(request.getJobId()); } });
/** * Cancel this request if it has been scheduled. Note that if the job isn't periodic, then the * time passed since the job has been scheduled is subtracted from the time frame. For example * a job should run between 4 and 6 seconds from now. You cancel the scheduled job after 2 * seconds, then the job will run between 2 and 4 seconds after it's been scheduled again. * * @return A builder to modify the parameters. */ public Builder cancelAndEdit() { // create a temporary variable, because .cancel() will reset mScheduledAt long scheduledAt = mScheduledAt; JobManager.instance().cancel(getJobId()); Builder builder = new Builder(this.mBuilder); mStarted = false; if (!isPeriodic()) { long offset = JobConfig.getClock().currentTimeMillis() - scheduledAt; long minValue = 1L; // 1ms builder.setExecutionWindow(Math.max(minValue, getStartMs() - offset), Math.max(minValue, getEndMs() - offset)); } return builder; }
@Test public void verifyAlarmIsCanceled() throws Exception { assumeTrue(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP); JobConfig.forceApi(JobApi.V_21); int jobId = scheduleJob(); final Intent intent = PlatformAlarmServiceExact.createIntent(context(), jobId, null); PendingIntent pendingIntent = PendingIntent.getService(context(), jobId, intent, PendingIntent.FLAG_NO_CREATE); assertThat(pendingIntent).isNotNull(); mJobManagerRule.getManager().cancel(jobId); pendingIntent = PendingIntent.getService(context(), jobId, intent, PendingIntent.FLAG_NO_CREATE); assertThat(pendingIntent).isNull(); }
@Test public void testCancel() { int jobId = new JobRequest.Builder(TAG) .setExecutionWindow(TimeUnit.HOURS.toMillis(4), TimeUnit.HOURS.toMillis(5)) .build() .schedule(); JobRequest request = mWorkManagerRule.getManager().getJobRequest(jobId); JobProxyWorkManager jobProxyWorkManager = new JobProxyWorkManager(InstrumentationRegistry.getTargetContext()); assertThat(jobProxyWorkManager.isPlatformJobScheduled(request)).isTrue(); String tag = JobProxyWorkManager.createTag(jobId); List<WorkInfo> statuses = mWorkManagerRule.getWorkStatus(tag); assertThat(statuses).isNotNull().hasSize(1); assertThat(statuses.get(0).getState()).isEqualTo(WorkInfo.State.ENQUEUED); mWorkManagerRule.getManager().cancel(jobId); assertThat(mWorkManagerRule.getWorkStatus(tag).get(0).getState()).isEqualTo(WorkInfo.State.CANCELLED); assertThat(jobProxyWorkManager.isPlatformJobScheduled(request)).isFalse(); }
@Test public void testTransientExtras() { Bundle extras = new Bundle(); extras.putInt("key", 5); JobRequest.Builder builder = new JobRequest.Builder(TAG) .setExecutionWindow(TimeUnit.HOURS.toMillis(4), TimeUnit.HOURS.toMillis(5)) .setTransientExtras(extras); int jobId = builder.build().schedule(); Bundle bundle = TransientBundleHolder.getBundle(jobId); assertThat(bundle).isNotNull(); assertThat(bundle.getInt("key")).isEqualTo(5); mWorkManagerRule.getManager().cancel(jobId); assertThat(TransientBundleHolder.getBundle(jobId)).isNull(); jobId = builder.build().schedule(); mWorkManagerRule.runJob(JobProxyWorkManager.createTag(jobId)); assertThat(TransientBundleHolder.getBundle(jobId)).isNull(); }
private void manageUnified(boolean start) { if (start) { final JobRequest.Builder b= new JobRequest.Builder(DemoUnifiedJob.JOB_TAG); PersistableBundleCompat extras=new PersistableBundleCompat(); if (download.isChecked()) { extras.putBoolean(KEY_DOWNLOAD, true); b .setExtras(extras) .setRequiredNetworkType(JobRequest.NetworkType.CONNECTED); } else { b.setRequiredNetworkType(JobRequest.NetworkType.ANY); } b .setPeriodic(getPeriod()) .setRequiresCharging(false) .setRequiresDeviceIdle(true); unifiedJobId=b.build().schedule(); } else { JobManager.instance().cancel(unifiedJobId); } }
for (JobRequest request : requests) { if (!request.isExact() || request.getStartMs() != JobRequest.START_NOW) { manager.cancel(request.getJobId());
/** * Cancel this request if it has been scheduled. Note that if the job isn't periodic, then the * time passed since the job has been scheduled is subtracted from the time frame. For example * a job should run between 4 and 6 seconds from now. You cancel the scheduled job after 2 * seconds, then the job will run between 2 and 4 seconds after it's been scheduled again. * * @return A builder to modify the parameters. */ public Builder cancelAndEdit() { // create a temporary variable, because .cancel() will reset mScheduledAt long scheduledAt = mScheduledAt; JobManager.instance().cancel(getJobId()); Builder builder = new Builder(this.mBuilder); mStarted = false; if (!isPeriodic()) { long offset = JobConfig.getClock().currentTimeMillis() - scheduledAt; long minValue = 1L; // 1ms builder.setExecutionWindow(Math.max(minValue, getStartMs() - offset), Math.max(minValue, getEndMs() - offset)); } return builder; }
/** * {@inheritDoc} */ @Override public boolean cancelRequest(String requestId) { boolean cancelled = false; for (Job job : JobManager.instance().getAllJobs()) { String currJobId = ((UploadJob) job).requestId; if (requestId.equals(currJobId)) { job.cancel(); cancelled = true; } } if (!cancelled) { for (JobRequest job : JobManager.instance().getAllJobRequests()) { String id = job.getExtras().getString("requestId", null); if (requestId.equals(id)) { cancelled = JobManager.instance().cancel(job.getJobId()); break; } } } killThread(requestId); Logger.i(TAG, String.format("Cancelling request %s, success: %s", requestId, cancelled)); return cancelled; }