61 lines
2.2 KiB
Java
61 lines
2.2 KiB
Java
|
package androidx.work;
|
||
|
|
||
|
import android.os.Build;
|
||
|
import androidx.annotation.NonNull;
|
||
|
import androidx.work.WorkRequest;
|
||
|
import androidx.work.impl.model.WorkSpec;
|
||
|
import java.util.ArrayList;
|
||
|
import java.util.List;
|
||
|
public final class OneTimeWorkRequest extends WorkRequest {
|
||
|
|
||
|
public static final class Builder extends WorkRequest.Builder<Builder, OneTimeWorkRequest> {
|
||
|
public Builder(@NonNull Class<? extends ListenableWorker> cls) {
|
||
|
super(cls);
|
||
|
this.mWorkSpec.inputMergerClassName = OverwritingInputMerger.class.getName();
|
||
|
}
|
||
|
|
||
|
@Override // androidx.work.WorkRequest.Builder
|
||
|
@NonNull
|
||
|
public OneTimeWorkRequest buildInternal() {
|
||
|
if (!this.mBackoffCriteriaSet || Build.VERSION.SDK_INT < 23 || !this.mWorkSpec.constraints.requiresDeviceIdle()) {
|
||
|
WorkSpec workSpec = this.mWorkSpec;
|
||
|
if (!workSpec.runInForeground || Build.VERSION.SDK_INT < 23 || !workSpec.constraints.requiresDeviceIdle()) {
|
||
|
return new OneTimeWorkRequest(this);
|
||
|
}
|
||
|
throw new IllegalArgumentException("Cannot run in foreground with an idle mode constraint");
|
||
|
}
|
||
|
throw new IllegalArgumentException("Cannot set backoff criteria on an idle mode job");
|
||
|
}
|
||
|
|
||
|
@Override // androidx.work.WorkRequest.Builder
|
||
|
@NonNull
|
||
|
public Builder getThis() {
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
@NonNull
|
||
|
public Builder setInputMerger(@NonNull Class<? extends InputMerger> cls) {
|
||
|
this.mWorkSpec.inputMergerClassName = cls.getName();
|
||
|
return this;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public OneTimeWorkRequest(Builder builder) {
|
||
|
super(builder.mId, builder.mWorkSpec, builder.mTags);
|
||
|
}
|
||
|
|
||
|
@NonNull
|
||
|
public static OneTimeWorkRequest from(@NonNull Class<? extends ListenableWorker> cls) {
|
||
|
return new Builder(cls).build();
|
||
|
}
|
||
|
|
||
|
@NonNull
|
||
|
public static List<OneTimeWorkRequest> from(@NonNull List<Class<? extends ListenableWorker>> list) {
|
||
|
ArrayList arrayList = new ArrayList(list.size());
|
||
|
for (Class<? extends ListenableWorker> cls : list) {
|
||
|
arrayList.add(new Builder(cls).build());
|
||
|
}
|
||
|
return arrayList;
|
||
|
}
|
||
|
}
|