Added in API level 21

JobInfo

open class JobInfo : Parcelable
kotlin.Any
   ↳ android.app.job.JobInfo

Container of data passed to the android.app.job.JobScheduler fully encapsulating the parameters required to schedule work against the calling application. These are constructed using the JobInfo.Builder. The goal here is to provide the scheduler with high-level semantics about the work you want to accomplish.

Prior to Android version Build.VERSION_CODES#Q, you had to specify at least one constraint on the JobInfo object that you are creating. Otherwise, the builder would throw an exception when building. From Android version Build.VERSION_CODES#Q and onwards, it is valid to schedule jobs with no constraints.

Summary

Nested classes

Builder class for constructing JobInfo objects.

Information about a content URI modification that a job would like to trigger on.

Constants
static Int

Exponentially back-off a failed job.

static Int

Linearly back-off a failed job.

static Long

Amount of backoff a job has initially by default, in milliseconds.

static Long

Maximum backoff we allow for a job, in milliseconds.

static Int

Sentinel value indicating that bytes are unknown.

static Int

This job requires network connectivity.

static Int

This job requires network connectivity that is a cellular network.

static Int

This job requires metered connectivity such as most cellular data networks.

static Int

Default.

static Int

This job requires network connectivity that is not roaming.

static Int

This job requires network connectivity that is unmetered.

static Int

Default value for all regular jobs.

static Int

This task should be ordered ahead of most other tasks.

static Int

Low priority.

static Int

This task is critical to user experience or functionality and should be run ahead of all other tasks.

static Int

Job has minimal value to the user.

Inherited constants
Public methods
open Int

open Boolean
equals(other: Any?)

open Int

Return the backoff policy of this job.

open ClipData?

open Int

open MutableSet<String!>

open Long

Return the estimated size of download traffic that will be performed by this job, in bytes.

open Long

Return the estimated size of upload traffic that will be performed by this job, in bytes.

open PersistableBundle

open Long

Flex time for this job.

open Int

Unique job id associated with this application (uid).

open Long

The amount of time the JobScheduler will wait before rescheduling a failed job.

open Long

Set to the interval between occurrences of this job.

open Long

static Long

Query the minimum flex time allowed for periodic scheduled jobs.

open Long

Set for a job that does not recur periodically, to specify a delay after which the job will be eligible for execution.

static Long

Query the minimum interval allowed for periodic scheduled jobs.

open Long

Return the smallest piece of data that cannot be easily paused and resumed, in bytes.

open Int

Return the basic description of the kind of network this job requires.

open Int

open NetworkRequest?

Return the detailed description of the kind of network this job requires, or null if no specific kind of network is required.

open ComponentName

Name of the service endpoint that will be called back into by the JobScheduler.

open String?

open Bundle

open Long

When triggering on content URI changes, this is the maximum delay we will use before scheduling the job.

open Long

When triggering on content URI changes, this is the delay from when a change is detected until the job is scheduled.

open Array<JobInfo.TriggerContentUri!>?

Which content: URIs must change for the job to be scheduled.

open Int

open Boolean

open Boolean

open Boolean

Track whether this job will repeat with a given period.

open Boolean

open Boolean

open Boolean

open Boolean

open Boolean

open Boolean

open Boolean

open String

open Unit
writeToParcel(out: Parcel, flags: Int)

Properties
static Parcelable.Creator<JobInfo!>

Constants

BACKOFF_POLICY_EXPONENTIAL

Added in API level 21
static val BACKOFF_POLICY_EXPONENTIAL: Int

Exponentially back-off a failed job. See android.app.job.JobInfo.Builder#setBackoffCriteria(long, int) retry_time(current_time, num_failures) = current_time + initial_backoff_millis * 2 ^ (num_failures - 1), num_failures >= 1

Value: 1

BACKOFF_POLICY_LINEAR

Added in API level 21
static val BACKOFF_POLICY_LINEAR: Int

Linearly back-off a failed job. See android.app.job.JobInfo.Builder#setBackoffCriteria(long, int) retry_time(current_time, num_failures) = current_time + initial_backoff_millis * num_failures, num_failures >= 1

Value: 0

DEFAULT_INITIAL_BACKOFF_MILLIS

Added in API level 21
static val DEFAULT_INITIAL_BACKOFF_MILLIS: Long

Amount of backoff a job has initially by default, in milliseconds.

Value: 30000L

MAX_BACKOFF_DELAY_MILLIS

Added in API level 21
static val MAX_BACKOFF_DELAY_MILLIS: Long

Maximum backoff we allow for a job, in milliseconds.

Value: 18000000L

NETWORK_BYTES_UNKNOWN

Added in API level 28
static val NETWORK_BYTES_UNKNOWN: Int

Sentinel value indicating that bytes are unknown.

Value: -1

NETWORK_TYPE_ANY

Added in API level 21
static val NETWORK_TYPE_ANY: Int

This job requires network connectivity.

Value: 1

NETWORK_TYPE_CELLULAR

Added in API level 28
static val NETWORK_TYPE_CELLULAR: Int

This job requires network connectivity that is a cellular network.

Value: 4

NETWORK_TYPE_METERED

Added in API level 26
Deprecated in API level 28
static val NETWORK_TYPE_METERED: Int

Deprecated: Cellular networks may be unmetered, or Wi-Fi networks may be metered, so this isn't a good way of selecting a specific transport. Instead, use NETWORK_TYPE_CELLULAR or android.net.NetworkRequest.Builder#addTransportType(int) if your job requires a specific network transport.

This job requires metered connectivity such as most cellular data networks.

Value: 4

NETWORK_TYPE_NONE

Added in API level 21
static val NETWORK_TYPE_NONE: Int

Default.

Value: 0

NETWORK_TYPE_NOT_ROAMING

Added in API level 24
static val NETWORK_TYPE_NOT_ROAMING: Int

This job requires network connectivity that is not roaming.

Value: 3

NETWORK_TYPE_UNMETERED

Added in API level 21
static val NETWORK_TYPE_UNMETERED: Int

This job requires network connectivity that is unmetered.

Value: 2

PRIORITY_DEFAULT

Added in API level 33
static val PRIORITY_DEFAULT: Int

Default value for all regular jobs. As noted in JobScheduler, these jobs have a general execution time of 10 minutes. Receives the standard job management policy.

Value: 300

PRIORITY_HIGH

Added in API level 33
static val PRIORITY_HIGH: Int

This task should be ordered ahead of most other tasks. It may be deferred a little, but if it doesn't run at some point, the user may think something is wrong. Assuming all constraints remain satisfied (including ideal system load conditions), these jobs can have an execution time of at least 4 minutes. Setting all of your jobs to high priority will not be beneficial to your app and in fact may hurt its performance in the long run.

Value: 400

PRIORITY_LOW

Added in API level 33
static val PRIORITY_LOW: Int

Low priority. The task provides some benefit to users, but is not critical and is more of a nice-to-have. This is more important than minimum priority jobs and will be prioritized ahead of them, but may still be deferred in lieu of higher priority jobs. JobScheduler may decide to defer these tasks while there are higher priority tasks in order to ensure there is sufficient quota available for the higher priority tasks. A sample task of low priority: prefetching data the user hasn't requested

Value: 200

PRIORITY_MAX

Added in API level 33
static val PRIORITY_MAX: Int

This task is critical to user experience or functionality and should be run ahead of all other tasks. Only expedited jobs and user-initiated jobs can have this priority.

Example tasks of max priority:

  • Receiving a text message and processing it to show a notification
  • Downloading or uploading some content the user requested to transfer immediately
Value: 500

PRIORITY_MIN

Added in API level 33
static val PRIORITY_MIN: Int

Job has minimal value to the user. The user has absolutely no expectation or knowledge of this task and it has no bearing on the user's perception of the app whatsoever. JobScheduler may decide to defer these tasks while there are higher priority tasks in order to ensure there is sufficient quota available for the higher priority tasks. A sample task of min priority: uploading analytics

Value: 100

Public methods

describeContents

Added in API level 21
open fun describeContents(): Int
Return
Int a bitmask indicating the set of special object types marshaled by this Parcelable object instance. Value is either 0 or android.os.Parcelable#CONTENTS_FILE_DESCRIPTOR

equals

Added in API level 21
open fun equals(other: Any?): Boolean
Parameters
obj the reference object with which to compare.
Return
Boolean true if this object is the same as the obj argument; false otherwise.

getBackoffPolicy

Added in API level 21
open fun getBackoffPolicy(): Int

Return the backoff policy of this job.

Return
Int Value is android.app.job.JobInfo#BACKOFF_POLICY_LINEAR, or android.app.job.JobInfo#BACKOFF_POLICY_EXPONENTIAL

getClipData

Added in API level 26
open fun getClipData(): ClipData?
Return
ClipData? This value may be null.

getClipGrantFlags

Added in API level 26
open fun getClipGrantFlags(): Int

getDebugTags

open fun getDebugTags(): MutableSet<String!>
Return
MutableSet<String!> This value cannot be null.

getEstimatedNetworkDownloadBytes

Added in API level 28
open fun getEstimatedNetworkDownloadBytes(): Long

Return the estimated size of download traffic that will be performed by this job, in bytes.
Value is a non-negative number of bytes.

Return
Long Estimated size of download traffic, or NETWORK_BYTES_UNKNOWN when unknown. Value is a non-negative number of bytes.

getEstimatedNetworkUploadBytes

Added in API level 28
open fun getEstimatedNetworkUploadBytes(): Long

Return the estimated size of upload traffic that will be performed by this job, in bytes.
Value is a non-negative number of bytes.

Return
Long Estimated size of upload traffic, or NETWORK_BYTES_UNKNOWN when unknown. Value is a non-negative number of bytes.

getExtras

Added in API level 21
open fun getExtras(): PersistableBundle
Return
PersistableBundle This value cannot be null.

getFlexMillis

Added in API level 24
open fun getFlexMillis(): Long

Flex time for this job. Only valid if this is a periodic job. The job can execute at any time in a window of flex length at the end of the period.

getId

Added in API level 21
open fun getId(): Int

Unique job id associated with this application (uid). This is the same job ID you supplied in the Builder constructor.

getInitialBackoffMillis

Added in API level 21
open fun getInitialBackoffMillis(): Long

The amount of time the JobScheduler will wait before rescheduling a failed job. This value will be increased depending on the backoff policy specified at job creation time. Defaults to 30 seconds, minimum is currently 10 seconds.

getIntervalMillis

Added in API level 21
open fun getIntervalMillis(): Long

Set to the interval between occurrences of this job. This value is not set if the job does not recur periodically.

getMaxExecutionDelayMillis

Added in API level 21
open fun getMaxExecutionDelayMillis(): Long

getMinFlexMillis

Added in API level 24
static fun getMinFlexMillis(): Long

Query the minimum flex time allowed for periodic scheduled jobs. Attempting to declare a shorter flex time than this when scheduling such a job will result in this amount as the effective flex time for the job.

Return
Long The minimum available flex time for scheduling periodic jobs, in milliseconds.

getMinLatencyMillis

Added in API level 21
open fun getMinLatencyMillis(): Long

Set for a job that does not recur periodically, to specify a delay after which the job will be eligible for execution. This value is not set if the job recurs periodically.

getMinPeriodMillis

Added in API level 24
static fun getMinPeriodMillis(): Long

Query the minimum interval allowed for periodic scheduled jobs. Attempting to declare a smaller period than this when scheduling a job will result in a job that is still periodic, but will run with this effective period.

Return
Long The minimum available interval for scheduling periodic jobs, in milliseconds.

getMinimumNetworkChunkBytes

Added in API level 33
open fun getMinimumNetworkChunkBytes(): Long

Return the smallest piece of data that cannot be easily paused and resumed, in bytes.
Value is a non-negative number of bytes.

Return
Long Smallest piece of data that cannot be easily paused and resumed, or NETWORK_BYTES_UNKNOWN when unknown. Value is a non-negative number of bytes.

getNetworkType

Added in API level 21
Deprecated in API level 28
open fun getNetworkType(): Int

Deprecated: This method attempts to map getRequiredNetwork() into the set of simple constants, which results in a loss of fidelity. Callers should move to using getRequiredNetwork() directly.

Return the basic description of the kind of network this job requires.

Return
Int Value is android.app.job.JobInfo#NETWORK_TYPE_NONE, android.app.job.JobInfo#NETWORK_TYPE_ANY, android.app.job.JobInfo#NETWORK_TYPE_UNMETERED, android.app.job.JobInfo#NETWORK_TYPE_NOT_ROAMING, or android.app.job.JobInfo#NETWORK_TYPE_CELLULAR

getRequiredNetwork

Added in API level 28
open fun getRequiredNetwork(): NetworkRequest?

Return the detailed description of the kind of network this job requires, or null if no specific kind of network is required.

getService

Added in API level 21
open fun getService(): ComponentName

Name of the service endpoint that will be called back into by the JobScheduler.

Return
ComponentName This value cannot be null.

getTraceTag

open fun getTraceTag(): String?
Return
String? This value may be null.

getTransientExtras

Added in API level 26
open fun getTransientExtras(): Bundle
Return
Bundle This value cannot be null.

getTriggerContentMaxDelay

Added in API level 24
open fun getTriggerContentMaxDelay(): Long

When triggering on content URI changes, this is the maximum delay we will use before scheduling the job.

getTriggerContentUpdateDelay

Added in API level 24
open fun getTriggerContentUpdateDelay(): Long

When triggering on content URI changes, this is the delay from when a change is detected until the job is scheduled.

getTriggerContentUris

Added in API level 24
open fun getTriggerContentUris(): Array<JobInfo.TriggerContentUri!>?

Which content: URIs must change for the job to be scheduled. Returns null if there are none required.

hashCode

Added in API level 21
open fun hashCode(): Int
Return
Int a hash code value for this object.

isExpedited

Added in API level 31
open fun isExpedited(): Boolean

isImportantWhileForeground

Added in API level 28
open fun isImportantWhileForeground(): Boolean

isPeriodic

Added in API level 21
open fun isPeriodic(): Boolean

Track whether this job will repeat with a given period.

isPersisted

Added in API level 21
open fun isPersisted(): Boolean

isPrefetch

Added in API level 28
open fun isPrefetch(): Boolean

isRequireBatteryNotLow

Added in API level 26
open fun isRequireBatteryNotLow(): Boolean

isRequireCharging

Added in API level 21
open fun isRequireCharging(): Boolean

isRequireDeviceIdle

Added in API level 21
open fun isRequireDeviceIdle(): Boolean

isRequireStorageNotLow

Added in API level 26
open fun isRequireStorageNotLow(): Boolean

isUserInitiated

Added in API level 34
open fun isUserInitiated(): Boolean

toString

Added in API level 21
open fun toString(): String
Return
String a string representation of the object.

writeToParcel

Added in API level 21
open fun writeToParcel(
    out: Parcel,
    flags: Int
): Unit
Parameters
dest The Parcel in which the object should be written. This value cannot be null.
flags Int: Additional flags about how the object should be written. May be 0 or PARCELABLE_WRITE_RETURN_VALUE. Value is either 0 or a combination of android.os.Parcelable#PARCELABLE_WRITE_RETURN_VALUE, and android.os.Parcelable.PARCELABLE_ELIDE_DUPLICATES

Properties

CREATOR

Added in API level 21
static val CREATOR: Parcelable.Creator<JobInfo!>