/** * @return If {@code true}, then all requirements are checked before the job runs. If one requirement * isn't met, then the job is rescheduled right away. * @see JobRequest#requirementsEnforced() */ public boolean requirementsEnforced() { return mRequest.requirementsEnforced(); }
public static long getEndMs(JobRequest request, boolean shiftEnd) { long endMs; if (request.getFailureCount() > 0) { endMs = request.getBackoffOffset(); } else { endMs = request.getEndMs(); } if (shiftEnd && request.requirementsEnforced() && request.hasRequirements()) { // move the end backwards if the API is smart with the requirements endMs = checkedMultiply(endMs, 100); } return endMs; }
@Test public void verifyMeetsRequirementsEnforcedIgnored() { Job job = createMockedJob(); when(job.getParams().getRequest().requirementsEnforced()).thenReturn(false); setupDeviceIdle(job, true, false); setupNetworkRequirement(job, JobRequest.NetworkType.CONNECTED, false, ConnectivityManager.TYPE_WIFI, false); assertThat(job.isRequirementDeviceIdleMet()).isFalse(); assertThat(job.isRequirementNetworkTypeMet()).isFalse(); assertThat(job.meetsRequirements()).isFalse(); assertThat(job.meetsRequirements(true)).isTrue(); }
@Test public void testPeriodic() { long interval = JobRequest.MIN_INTERVAL * 5; JobRequest request = getBuilder() .setPeriodic(interval) .setExtras(new PersistableBundleCompat()) .build(); assertThat(request.getJobId()).isGreaterThan(0); assertThat(request.getTag()).isEqualTo(DummyJobs.SuccessJob.TAG); assertThat(request.getIntervalMs()).isEqualTo(interval); assertThat(request.getFlexMs()).isEqualTo(interval); assertThat(request.isPeriodic()).isTrue(); assertThat(request.isFlexSupport()).isFalse(); assertThat(request.getStartMs()).isNegative(); assertThat(request.getEndMs()).isNegative(); assertThat(request.getBackoffMs()).isEqualTo(JobRequest.DEFAULT_BACKOFF_MS); assertThat(request.getBackoffPolicy()).isEqualTo(JobRequest.DEFAULT_BACKOFF_POLICY); assertThat(request.getExtras()).isNotNull(); assertThat(request.isExact()).isFalse(); assertThat(request.requiredNetworkType()).isEqualTo(JobRequest.DEFAULT_NETWORK_TYPE); assertThat(request.requirementsEnforced()).isFalse(); assertThat(request.requiresCharging()).isFalse(); assertThat(request.requiresDeviceIdle()).isFalse(); }
/*package*/ boolean meetsRequirements(boolean checkRequirementsEnforced) { if (checkRequirementsEnforced && !getParams().getRequest().requirementsEnforced()) { return true; } if (!isRequirementChargingMet()) { CAT.w("Job requires charging, reschedule"); return false; } if (!isRequirementDeviceIdleMet()) { CAT.w("Job requires device to be idle, reschedule"); return false; } if (!isRequirementNetworkTypeMet()) { CAT.w("Job requires network to be %s, but was %s", getParams().getRequest().requiredNetworkType(), Device.getNetworkType(getContext())); return false; } if (!isRequirementBatteryNotLowMet()) { CAT.w("Job requires battery not be low, reschedule"); return false; } if (!isRequirementStorageNotLowMet()) { CAT.w("Job requires storage not be low, reschedule"); return false; } return true; }
/** * @return If {@code true}, then all requirements are checked before the job runs. If one requirement * isn't met, then the job is rescheduled right away. * @see JobRequest#requirementsEnforced() */ public boolean requirementsEnforced() { return mRequest.requirementsEnforced(); }
public static long getEndMs(JobRequest request, boolean shiftEnd) { long endMs; if (request.getFailureCount() > 0) { endMs = request.getBackoffOffset(); } else { endMs = request.getEndMs(); } if (shiftEnd && request.requirementsEnforced() && request.hasRequirements()) { // move the end backwards if the API is smart with the requirements endMs = checkedMultiply(endMs, 100); } return endMs; }
/*package*/ boolean meetsRequirements(boolean checkRequirementsEnforced) { if (checkRequirementsEnforced && !getParams().getRequest().requirementsEnforced()) { return true; } if (!isRequirementChargingMet()) { CAT.w("Job requires charging, reschedule"); return false; } if (!isRequirementDeviceIdleMet()) { CAT.w("Job requires device to be idle, reschedule"); return false; } if (!isRequirementNetworkTypeMet()) { CAT.w("Job requires network to be %s, but was %s", getParams().getRequest().requiredNetworkType(), Device.getNetworkType(getContext())); return false; } if (!isRequirementBatteryNotLowMet()) { CAT.w("Job requires battery not be low, reschedule"); return false; } if (!isRequirementStorageNotLowMet()) { CAT.w("Job requires storage not be low, reschedule"); return false; } return true; }