discord-jadx/app/src/main/java/androidx/work/WorkRequest.java

190 lines
6.2 KiB
Java

package androidx.work;
import android.annotation.SuppressLint;
import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import androidx.annotation.RestrictTo;
import androidx.annotation.VisibleForTesting;
import androidx.recyclerview.widget.RecyclerView;
import androidx.work.WorkInfo;
import androidx.work.impl.model.WorkSpec;
import java.time.Duration;
import java.util.HashSet;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
public abstract class WorkRequest {
public static final long DEFAULT_BACKOFF_DELAY_MILLIS = 30000;
@SuppressLint({"MinMaxConstant"})
public static final long MAX_BACKOFF_MILLIS = 18000000;
@SuppressLint({"MinMaxConstant"})
public static final long MIN_BACKOFF_MILLIS = 10000;
@NonNull
private UUID mId;
@NonNull
private Set<String> mTags;
@NonNull
private WorkSpec mWorkSpec;
public static abstract class Builder<B extends Builder<?, ?>, W extends WorkRequest> {
public boolean mBackoffCriteriaSet = false;
public UUID mId = UUID.randomUUID();
public Set<String> mTags = new HashSet();
public WorkSpec mWorkSpec;
public Class<? extends ListenableWorker> mWorkerClass;
public Builder(@NonNull Class<? extends ListenableWorker> cls) {
this.mWorkerClass = cls;
this.mWorkSpec = new WorkSpec(this.mId.toString(), cls.getName());
addTag(cls.getName());
}
@NonNull
public final B addTag(@NonNull String str) {
this.mTags.add(str);
return getThis();
}
@NonNull
public final W build() {
W buildInternal = buildInternal();
this.mId = UUID.randomUUID();
WorkSpec workSpec = new WorkSpec(this.mWorkSpec);
this.mWorkSpec = workSpec;
workSpec.f29id = this.mId.toString();
return buildInternal;
}
@NonNull
public abstract W buildInternal();
@NonNull
public abstract B getThis();
@NonNull
public final B keepResultsForAtLeast(long j, @NonNull TimeUnit timeUnit) {
this.mWorkSpec.minimumRetentionDuration = timeUnit.toMillis(j);
return getThis();
}
@NonNull
@RequiresApi(26)
public final B keepResultsForAtLeast(@NonNull Duration duration) {
this.mWorkSpec.minimumRetentionDuration = duration.toMillis();
return getThis();
}
@NonNull
public final B setBackoffCriteria(@NonNull BackoffPolicy backoffPolicy, long j, @NonNull TimeUnit timeUnit) {
this.mBackoffCriteriaSet = true;
WorkSpec workSpec = this.mWorkSpec;
workSpec.backoffPolicy = backoffPolicy;
workSpec.setBackoffDelayDuration(timeUnit.toMillis(j));
return getThis();
}
@NonNull
@RequiresApi(26)
public final B setBackoffCriteria(@NonNull BackoffPolicy backoffPolicy, @NonNull Duration duration) {
this.mBackoffCriteriaSet = true;
WorkSpec workSpec = this.mWorkSpec;
workSpec.backoffPolicy = backoffPolicy;
workSpec.setBackoffDelayDuration(duration.toMillis());
return getThis();
}
@NonNull
public final B setConstraints(@NonNull Constraints constraints) {
this.mWorkSpec.constraints = constraints;
return getThis();
}
@NonNull
public B setInitialDelay(long j, @NonNull TimeUnit timeUnit) {
this.mWorkSpec.initialDelay = timeUnit.toMillis(j);
if (RecyclerView.FOREVER_NS - System.currentTimeMillis() > this.mWorkSpec.initialDelay) {
return getThis();
}
throw new IllegalArgumentException("The given initial delay is too large and will cause an overflow!");
}
@NonNull
@RequiresApi(26)
public B setInitialDelay(@NonNull Duration duration) {
this.mWorkSpec.initialDelay = duration.toMillis();
if (RecyclerView.FOREVER_NS - System.currentTimeMillis() > this.mWorkSpec.initialDelay) {
return getThis();
}
throw new IllegalArgumentException("The given initial delay is too large and will cause an overflow!");
}
@NonNull
@VisibleForTesting
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP})
public final B setInitialRunAttemptCount(int i) {
this.mWorkSpec.runAttemptCount = i;
return getThis();
}
@NonNull
@VisibleForTesting
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP})
public final B setInitialState(@NonNull WorkInfo.State state) {
this.mWorkSpec.state = state;
return getThis();
}
@NonNull
public final B setInputData(@NonNull Data data) {
this.mWorkSpec.input = data;
return getThis();
}
@NonNull
@VisibleForTesting
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP})
public final B setPeriodStartTime(long j, @NonNull TimeUnit timeUnit) {
this.mWorkSpec.periodStartTime = timeUnit.toMillis(j);
return getThis();
}
@NonNull
@VisibleForTesting
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP})
public final B setScheduleRequestedAt(long j, @NonNull TimeUnit timeUnit) {
this.mWorkSpec.scheduleRequestedAt = timeUnit.toMillis(j);
return getThis();
}
}
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP})
public WorkRequest(@NonNull UUID uuid, @NonNull WorkSpec workSpec, @NonNull Set<String> set) {
this.mId = uuid;
this.mWorkSpec = workSpec;
this.mTags = set;
}
@NonNull
public UUID getId() {
return this.mId;
}
@NonNull
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP})
public String getStringId() {
return this.mId.toString();
}
@NonNull
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP})
public Set<String> getTags() {
return this.mTags;
}
@NonNull
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP})
public WorkSpec getWorkSpec() {
return this.mWorkSpec;
}
}