.addTag(TAG_OUTPUT) .build(); continuation = continuation.then(save);
public void doTheDownload() { Constraints constraints=new Constraints.Builder() .setRequiredNetworkType(NetworkType.CONNECTED) .setRequiresBatteryNotLow(true) .build(); OneTimeWorkRequest downloadWork= new OneTimeWorkRequest.Builder(DownloadWorker.class) .setConstraints(constraints) .setInputData(new Data.Builder() .putString(DownloadWorker.KEY_URL, "https://commonsware.com/Android/Android-1_0-CC.pdf") .putString(DownloadWorker.KEY_FILENAME, "oldbook.pdf") .build()) .addTag("download") .build(); WorkManager.getInstance().enqueue(downloadWork); final LiveData<WorkInfo> liveOpStatus= WorkManager.getInstance().getWorkInfoByIdLiveData(downloadWork.getId()); liveWorkStatus.addSource(liveOpStatus, workStatus -> { liveWorkStatus.setValue(workStatus); if (workStatus.getState().isFinished()) { liveWorkStatus.removeSource(liveOpStatus); } }); } }
private WorkRequest buildWorkRequest(Constraints constraints) { OneTimeWorkRequest.Builder builder= new OneTimeWorkRequest.Builder(DownloadWorker.class) .setInputData(new Data.Builder() .putString(DownloadWorker.KEY_URL, "https://commonsware.com/Android/Android-1_0-CC.pdf") .putString(DownloadWorker.KEY_FILENAME, "oldbook.pdf") .build()) .addTag("download"); if (constraints!=null) { builder.setConstraints(constraints); } return builder.build(); } }
@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); }