@Override protected JobInfo.Builder setTransientBundle(JobRequest request, JobInfo.Builder builder) { return builder.setTransientExtras(request.getTransientExtras()); }
public static void persistBundle(@NonNull Context context, @NonNull JobRequest request) { Intent intent = PlatformAlarmServiceExact.createIntent(context, request.getJobId(), request.getTransientExtras()); PendingIntent pendingIntent = PendingIntent.getService(context, request.getJobId(), intent, PendingIntent.FLAG_UPDATE_CURRENT); long when = System.currentTimeMillis() + TimeUnit.DAYS.toMillis(1000); AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); alarmManager.setExact(AlarmManager.RTC, when, pendingIntent); }
protected PendingIntent getPendingIntent(JobRequest request, int flags) { return getPendingIntent(request.getJobId(), request.isExact(), request.getTransientExtras(), flags); }
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; }
@Override public void plantOneOff(JobRequest request) { PendingIntent pendingIntent = getPendingIntent(request, false); AlarmManager alarmManager = getAlarmManager(); if (alarmManager == null) { return; } try { if (request.isExact()) { if (request.getStartMs() == 1 && request.getFailureCount() <= 0) { // this job should start immediately PlatformAlarmService.start(mContext, request.getJobId(), request.getTransientExtras()); } else { plantOneOffExact(request, alarmManager, pendingIntent); } } else { plantOneOffInexact(request, alarmManager, pendingIntent); } } catch (Exception e) { // https://gist.github.com/vRallev/621b0b76a14ddde8691c mCat.e(e); } }
@Override public void plantOneOff(JobRequest request) { if (request.isTransient()) { TransientBundleHolder.putBundle(request.getJobId(), request.getTransientExtras()); } OneTimeWorkRequest workRequest = new OneTimeWorkRequest.Builder(PlatformWorker.class) .setInitialDelay(request.getStartMs(), TimeUnit.MILLISECONDS) // don't use the average here, WorkManager will do the right thing .setConstraints(buildConstraints(request)) .addTag(createTag(request.getJobId())) .build(); // don't set the back-off criteria, android-job is handling this WorkManager workManager = getWorkManager(); if (workManager == null) { throw new JobProxyIllegalStateException("WorkManager is null"); } workManager.enqueue(workRequest); }
@Override protected JobInfo.Builder setTransientBundle(JobRequest request, JobInfo.Builder builder) { return builder.setTransientExtras(request.getTransientExtras()); }
public static void persistBundle(@NonNull Context context, @NonNull JobRequest request) { Intent intent = PlatformAlarmServiceExact.createIntent(context, request.getJobId(), request.getTransientExtras()); PendingIntent pendingIntent = PendingIntent.getService(context, request.getJobId(), intent, PendingIntent.FLAG_UPDATE_CURRENT); long when = System.currentTimeMillis() + TimeUnit.DAYS.toMillis(1000); AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); alarmManager.setExact(AlarmManager.RTC, when, pendingIntent); }
protected PendingIntent getPendingIntent(JobRequest request, int flags) { return getPendingIntent(request.getJobId(), request.isExact(), request.getTransientExtras(), flags); }
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; }
@Override public void plantOneOff(JobRequest request) { PendingIntent pendingIntent = getPendingIntent(request, false); AlarmManager alarmManager = getAlarmManager(); if (alarmManager == null) { return; } try { if (request.isExact()) { if (request.getStartMs() == 1 && request.getFailureCount() <= 0) { // this job should start immediately PlatformAlarmService.start(mContext, request.getJobId(), request.getTransientExtras()); } else { plantOneOffExact(request, alarmManager, pendingIntent); } } else { plantOneOffInexact(request, alarmManager, pendingIntent); } } catch (Exception e) { // https://gist.github.com/vRallev/621b0b76a14ddde8691c mCat.e(e); } }