public final class

WorkInfo

extends java.lang.Object

 java.lang.Object

↳androidx.work.WorkInfo

Overview

Information about a particular WorkRequest containing the id of the WorkRequest, its current WorkInfo.State, output, tags, and run attempt count. Note that output is only available for the terminal states (WorkInfo.State.SUCCEEDED and WorkInfo.State.FAILED).

Summary

Constructors
publicWorkInfo(java.util.UUID id, WorkInfo.State state, Data outputData, java.util.List<java.lang.String> tags, Data progress, int runAttemptCount)

Methods
public booleanequals(java.lang.Object o)

public java.util.UUIDgetId()

Gets the identifier of the WorkRequest.

public DatagetOutputData()

Gets the output Data for the WorkRequest.

public DatagetProgress()

Gets the progress Data associated with the WorkRequest.

public intgetRunAttemptCount()

Gets the run attempt count of the WorkRequest.

public WorkInfo.StategetState()

Gets the current WorkInfo.State of the WorkRequest.

public java.util.Set<java.lang.String>getTags()

Gets the java.util.Set of tags associated with the WorkRequest.

public inthashCode()

public java.lang.StringtoString()

from java.lang.Objectclone, finalize, getClass, notify, notifyAll, wait, wait, wait

Constructors

public WorkInfo(java.util.UUID id, WorkInfo.State state, Data outputData, java.util.List<java.lang.String> tags, Data progress, int runAttemptCount)

Methods

public java.util.UUID getId()

Gets the identifier of the WorkRequest.

Returns:

The identifier of a WorkRequest

public WorkInfo.State getState()

Gets the current WorkInfo.State of the WorkRequest.

Returns:

The current WorkInfo.State of the WorkRequest

public Data getOutputData()

Gets the output Data for the WorkRequest. If the WorkRequest is unfinished, this is always Data.EMPTY.

Returns:

The output Data of the WorkRequest

public java.util.Set<java.lang.String> getTags()

Gets the java.util.Set of tags associated with the WorkRequest.

Returns:

The java.util.Set of tags associated with the WorkRequest

public Data getProgress()

Gets the progress Data associated with the WorkRequest.

Returns:

The progress Data associated with the WorkRequest

public int getRunAttemptCount()

Gets the run attempt count of the WorkRequest. Note that for PeriodicWorkRequests, the run attempt count gets reset between successful runs.

Returns:

The run attempt count of the WorkRequest.

public boolean equals(java.lang.Object o)

public int hashCode()

public java.lang.String toString()

Source

/*
 * Copyright 2018 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package androidx.work;

import androidx.annotation.IntRange;
import androidx.annotation.NonNull;
import androidx.annotation.RestrictTo;

import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.UUID;

/**
 * Information about a particular {@link WorkRequest} containing the id of the WorkRequest, its
 * current {@link State}, output, tags, and run attempt count.  Note that output is only available
 * for the terminal states ({@link State#SUCCEEDED} and {@link State#FAILED}).
 */

public final class WorkInfo {

    private @NonNull UUID mId;
    private @NonNull State mState;
    private @NonNull Data mOutputData;
    private @NonNull Set<String> mTags;
    private @NonNull Data mProgress;
    private int mRunAttemptCount;

    /**
     * @hide
     */
    @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
    public WorkInfo(
            @NonNull UUID id,
            @NonNull State state,
            @NonNull Data outputData,
            @NonNull List<String> tags,
            @NonNull Data progress,
            int runAttemptCount) {
        mId = id;
        mState = state;
        mOutputData = outputData;
        mTags = new HashSet<>(tags);
        mProgress = progress;
        mRunAttemptCount = runAttemptCount;
    }

    /**
     * Gets the identifier of the {@link WorkRequest}.
     *
     * @return The identifier of a {@link WorkRequest}
     */
    public @NonNull UUID getId() {
        return mId;
    }

    /**
     * Gets the current {@link State} of the {@link WorkRequest}.
     *
     * @return The current {@link State} of the {@link WorkRequest}
     */
    public @NonNull State getState() {
        return mState;
    }

    /**
     * Gets the output {@link Data} for the {@link WorkRequest}.  If the WorkRequest is unfinished,
     * this is always {@link Data#EMPTY}.
     *
     * @return The output {@link Data} of the {@link WorkRequest}
     */
    public @NonNull Data getOutputData() {
        return mOutputData;
    }

    /**
     * Gets the {@link Set} of tags associated with the {@link WorkRequest}.
     *
     * @return The {@link Set} of tags associated with the {@link WorkRequest}
     */
    public @NonNull Set<String> getTags() {
        return mTags;
    }

    /**
     * Gets the progress {@link Data} associated with the {@link WorkRequest}.
     *
     * @return The progress {@link Data} associated with the {@link WorkRequest}
     */
    public @NonNull Data getProgress() {
        return mProgress;
    }

    /**
     * Gets the run attempt count of the {@link WorkRequest}.  Note that for
     * {@link PeriodicWorkRequest}s, the run attempt count gets reset between successful runs.
     *
     * @return The run attempt count of the {@link WorkRequest}.
     */
    @IntRange(from = 0)
    public int getRunAttemptCount() {
        return mRunAttemptCount;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        WorkInfo workInfo = (WorkInfo) o;

        if (mRunAttemptCount != workInfo.mRunAttemptCount) return false;
        if (!mId.equals(workInfo.mId)) return false;
        if (mState != workInfo.mState) return false;
        if (!mOutputData.equals(workInfo.mOutputData)) return false;
        if (!mTags.equals(workInfo.mTags)) return false;
        return mProgress.equals(workInfo.mProgress);
    }

    @Override
    public int hashCode() {
        int result = mId.hashCode();
        result = 31 * result + mState.hashCode();
        result = 31 * result + mOutputData.hashCode();
        result = 31 * result + mTags.hashCode();
        result = 31 * result + mProgress.hashCode();
        result = 31 * result + mRunAttemptCount;
        return result;
    }

    @Override
    public String toString() {
        return "WorkInfo{"
                +   "mId='" + mId + '\''
                +   ", mState=" + mState
                +   ", mOutputData=" + mOutputData
                +   ", mTags=" + mTags
                +   ", mProgress=" + mProgress
                + '}';
    }

    /**
     * The current lifecycle state of a {@link WorkRequest}.
     */
    public enum State {

        /**
         * Used to indicate that the {@link WorkRequest} is enqueued and eligible to run when its
         * {@link Constraints} are met and resources are available.
         */
        ENQUEUED,

        /**
         * Used to indicate that the {@link WorkRequest} is currently being executed.
         */
        RUNNING,

        /**
         * Used to indicate that the {@link WorkRequest} has completed in a successful state.  Note
         * that {@link PeriodicWorkRequest}s will never enter this state (they will simply go back
         * to {@link #ENQUEUED} and be eligible to run again).
         */
        SUCCEEDED,

        /**
         * Used to indicate that the {@link WorkRequest} has completed in a failure state.  All
         * dependent work will also be marked as {@code #FAILED} and will never run.
         */
        FAILED,

        /**
         * Used to indicate that the {@link WorkRequest} is currently blocked because its
         * prerequisites haven't finished successfully.
         */
        BLOCKED,

        /**
         * Used to indicate that the {@link WorkRequest} has been cancelled and will not execute.
         * All dependent work will also be marked as {@code #CANCELLED} and will not run.
         */
        CANCELLED;

        /**
         * Returns {@code true} if this State is considered finished.
         *
         * @return {@code true} for {@link #SUCCEEDED}, {@link #FAILED}, and * {@link #CANCELLED}
         *         states
         */
        public boolean isFinished() {
            return (this == SUCCEEDED || this == FAILED || this == CANCELLED);
        }
    }
}