/** * Call {@link #isRequirementChargingMet()} to check whether this requirement is fulfilled. * * @return If {@code true}, then the job should only run if the device is charging. * @see JobRequest#requiresCharging() */ public boolean requiresCharging() { return mRequest.requiresCharging(); }
/** * @return Whether any of the requirements is different than the default value. */ public boolean hasRequirements() { return requiresCharging() || requiresDeviceIdle() || requiresBatteryNotLow() || requiresStorageNotLow() || requiredNetworkType() != DEFAULT_NETWORK_TYPE; }
/** * @return {@code false} if the {@link Job} requires the device to be charging and it isn't charging. * Otherwise always returns {@code true}. */ protected boolean isRequirementChargingMet() { return !(getParams().getRequest().requiresCharging() && !Device.getBatteryStatus(getContext()).isCharging()); }
protected JobInfo.Builder createBaseBuilder(JobRequest request, boolean allowPersisting) { JobInfo.Builder builder = new JobInfo.Builder(request.getJobId(), new ComponentName(mContext, PlatformJobService.class)) .setRequiresCharging(request.requiresCharging()) .setRequiresDeviceIdle(request.requiresDeviceIdle()) .setRequiredNetworkType(convertNetworkType(request.requiredNetworkType())) .setPersisted(allowPersisting && !request.isTransient() && JobUtil.hasBootPermission(mContext)); return setTransientBundle(request, builder); }
protected <T extends Task.Builder> T prepareBuilder(T builder, JobRequest request) { builder.setTag(createTag(request)) .setService(PlatformGcmService.class) .setUpdateCurrent(true) .setRequiredNetwork(convertNetworkType(request.requiredNetworkType())) .setPersisted(JobUtil.hasBootPermission(mContext)) .setRequiresCharging(request.requiresCharging()) .setExtras(request.getTransientExtras()); return builder; }
private static Constraints buildConstraints(JobRequest request) { Constraints.Builder constraintsBuilder = new Constraints.Builder() .setRequiresBatteryNotLow(request.requiresBatteryNotLow()) .setRequiresCharging(request.requiresCharging()) .setRequiresStorageNotLow(request.requiresStorageNotLow()) .setRequiredNetworkType(mapNetworkType(request.requiredNetworkType())); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { constraintsBuilder.setRequiresDeviceIdle(request.requiresDeviceIdle()); } return constraintsBuilder.build(); }
@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(); }
/** * Call {@link #isRequirementChargingMet()} to check whether this requirement is fulfilled. * * @return If {@code true}, then the job should only run if the device is charging. * @see JobRequest#requiresCharging() */ public boolean requiresCharging() { return mRequest.requiresCharging(); }
/** * @return Whether any of the requirements is different than the default value. */ public boolean hasRequirements() { return requiresCharging() || requiresDeviceIdle() || requiresBatteryNotLow() || requiresStorageNotLow() || requiredNetworkType() != DEFAULT_NETWORK_TYPE; }
/** * @return {@code false} if the {@link Job} requires the device to be charging and it isn't charging. * Otherwise always returns {@code true}. */ protected boolean isRequirementChargingMet() { return !(getParams().getRequest().requiresCharging() && !Device.getBatteryStatus(getContext()).isCharging()); }
protected JobInfo.Builder createBaseBuilder(JobRequest request, boolean allowPersisting) { JobInfo.Builder builder = new JobInfo.Builder(request.getJobId(), new ComponentName(mContext, PlatformJobService.class)) .setRequiresCharging(request.requiresCharging()) .setRequiresDeviceIdle(request.requiresDeviceIdle()) .setRequiredNetworkType(convertNetworkType(request.requiredNetworkType())) .setPersisted(allowPersisting && !request.isTransient() && JobUtil.hasBootPermission(mContext)); return setTransientBundle(request, builder); }
@Test public void testAdapter() throws InterruptedException, IOException { FilePayload payload = buildPayload(); int tenMinutes = 10 * 60 * 1000; UploadRequest<FilePayload> request = buildUploadRequest(payload, tenMinutes); JobRequest adapted = AndroidJobStrategy.adapt(request); assertEquals(20, adapted.getStartMs()); assertEquals(tenMinutes, adapted.getEndMs()); assertEquals(true, adapted.requiresCharging()); assertEquals(false, adapted.requiresDeviceIdle()); assertEquals(100, adapted.getBackoffMs()); assertEquals(JobRequest.BackoffPolicy.LINEAR, adapted.getBackoffPolicy()); assertEquals(9, adapted.getExtras().get("maxErrorRetries")); } }
protected <T extends Task.Builder> T prepareBuilder(T builder, JobRequest request) { builder.setTag(createTag(request)) .setService(PlatformGcmService.class) .setUpdateCurrent(true) .setRequiredNetwork(convertNetworkType(request.requiredNetworkType())) .setPersisted(JobUtil.hasBootPermission(mContext)) .setRequiresCharging(request.requiresCharging()) .setExtras(request.getTransientExtras()); return builder; }