Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Constants](https://developer.android.com/reference/android/app/ApplicationStartInfo#constants) \| [Inherited Constants](https://developer.android.com/reference/android/app/ApplicationStartInfo#inhconstants) \| [Fields](https://developer.android.com/reference/android/app/ApplicationStartInfo#lfields) \| [Methods](https://developer.android.com/reference/android/app/ApplicationStartInfo#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/app/ApplicationStartInfo#inhmethods)

# ApplicationStartInfo

*** ** * ** ***


`
public

final

class
ApplicationStartInfo
`


`

extends https://developer.android.com/reference/java/lang/Object


`

`


implements

https://developer.android.com/reference/android/os/Parcelable


`

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | android.app.ApplicationStartInfo |

<br />

*** ** * ** ***

Describes information related to an application process's startup.


Many aspects concerning why and how an applications process was started are valuable for apps
both for logging and for potential behavior changes. Reason for process start, start type,
start times, throttling, and other useful diagnostic data can be obtained from
`https://developer.android.com/reference/android/app/ApplicationStartInfo` records.


ApplicationStartInfo objects can be retrieved via:
- `https://developer.android.com/reference/android/app/ActivityManager#getHistoricalProcessStartReasons(int)`, which can be called during or after
a application's startup. Using this method, an app can retrieve information about an
in-progress app start.
- `https://developer.android.com/reference/android/app/ActivityManager#addApplicationStartInfoCompletionListener(java.util.concurrent.Executor,%20java.util.function.Consumer<android.app.ApplicationStartInfo>)`, which returns an
ApplicationStartInfo object via a callback when the startup is complete, or immediately
if requested after the startup is complete.

<br />

## Summary

| ### Constants ||
|---|---|
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#LAUNCH_MODE_SINGLE_INSTANCE` The system creates the activity at the root of a new task or locates the activity on an existing task with the same affinity. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#LAUNCH_MODE_SINGLE_INSTANCE_PER_TASK` The activity can only be running as the root activity of the task, the first activity that created the task, and therefore there will only be one instance of this activity in a task; but activity can be instantiated multiple times in different tasks. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#LAUNCH_MODE_SINGLE_TASK` Same as "singleTask", except that the system doesn't launch any other activities into the task holding the instance. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#LAUNCH_MODE_SINGLE_TOP` If an instance of the activity already exists at the top of the target task, the system routes the intent to that instance through a call to its onNewIntent() method, rather than creating a new instance of the activity. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#LAUNCH_MODE_STANDARD` Default. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#STARTUP_STATE_ERROR` State indicating process startup has failed. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#STARTUP_STATE_FIRST_FRAME_DRAWN` State indicating process startup has made it to first frame draw. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#STARTUP_STATE_STARTED` State indicating process startup has started. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_COMPONENT_ACTIVITY` Process was started for an activity component. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_COMPONENT_BROADCAST` Process was started for a broadcast component. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_COMPONENT_CONTENT_PROVIDER` Process was started for a content provider component. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_COMPONENT_OTHER` Process was started not for one of the four standard components. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_COMPONENT_SERVICE` Process was started for a service component. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_REASON_ALARM` Process started due to alarm. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_REASON_BACKUP` Process started to run backup. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_REASON_BOOT_COMPLETE` Process started due to boot complete. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_REASON_BROADCAST` Process started due to broadcast received for any reason not explicitly listed. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_REASON_CONTENT_PROVIDER` Process started due to access of ContentProvider for any reason not explicitly listed. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_REASON_JOB` \* Process started to run scheduled job. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_REASON_LAUNCHER` Process started due to click app icon or widget from launcher. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_REASON_LAUNCHER_RECENTS` Process started from launcher recents. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_REASON_OTHER` Process started not for any of the listed reasons. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_REASON_PUSH` Process started due to push message. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_REASON_SERVICE` Process started due to Service started for any reason not explicitly listed.. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_REASON_START_ACTIVITY` Process started due to Activity started for any reason not explicitly listed. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_TIMESTAMP_APPLICATION_ONCREATE` Clock monotonic timestamp of Application onCreate called. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_TIMESTAMP_BIND_APPLICATION` Clock monotonic timestamp of bindApplication called. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_TIMESTAMP_FIRST_FRAME` Clock monotonic timestamp of first frame drawn. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_TIMESTAMP_FORK` Clock monotonic timestamp of process fork. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_TIMESTAMP_FULLY_DRAWN` Clock monotonic timestamp of reportFullyDrawn called by application. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_TIMESTAMP_INITIAL_RENDERTHREAD_FRAME` Clock monotonic timestamp of initial renderthread frame. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_TIMESTAMP_LAUNCH` Clock monotonic timestamp of launch started. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_TIMESTAMP_RESERVED_RANGE_DEVELOPER` The end of the range reserved for developer supplied timestamps. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_TIMESTAMP_RESERVED_RANGE_DEVELOPER_START` The beginning of the range reserved for developer supplied timestamps. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_TIMESTAMP_RESERVED_RANGE_SYSTEM` The end of the range, beginning with 0, reserved for system timestamps. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_TIMESTAMP_SOURCE_EVENT` Clock monotonic timestamp of the source event which triggered this start. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_TIMESTAMP_SURFACEFLINGER_COMPOSITION_COMPLETE` Clock monotonic timestamp of surfaceflinger composition complete. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_TYPE_COLD` Process started from scratch. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_TYPE_HOT` Process brought back to foreground. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_TYPE_UNSET` Start type not yet set. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_TYPE_WARM` Process retained minimally SavedInstanceState. |

### Inherited constants

From interface `https://developer.android.com/reference/android/os/Parcelable` `int` `https://developer.android.com/reference/android/os/Parcelable#CONTENTS_FILE_DESCRIPTOR`

Descriptor bit used with `https://developer.android.com/reference/android/os/Parcelable#describeContents()`: indicates that
the Parcelable object's flattened representation includes a file descriptor.


`int` `https://developer.android.com/reference/android/os/Parcelable#PARCELABLE_WRITE_RETURN_VALUE`

Flag for use with `https://developer.android.com/reference/android/os/Parcelable#writeToParcel(android.os.Parcel,%20int)`: the object being written
is a return value, that is the result of a function such as
"`Parcelable someFunction()`",
"`void someFunction(out Parcelable)`", or
"`void someFunction(inout Parcelable)`".


| ### Fields ||
|---|---|
| ` public static final https://developer.android.com/reference/android/os/Parcelable.Creator<https://developer.android.com/reference/android/app/ApplicationStartInfo>` | `https://developer.android.com/reference/android/app/ApplicationStartInfo#CREATOR` |

| ### Public methods ||
|---|---|
| ` int` | ` https://developer.android.com/reference/android/app/ApplicationStartInfo#describeContents()() ` Describe the kinds of special objects contained in this Parcelable instance's marshaled representation. |
| ` boolean` | ` https://developer.android.com/reference/android/app/ApplicationStartInfo#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object other) ` Indicates whether some other object is "equal to" this one. |
| ` int` | ` https://developer.android.com/reference/android/app/ApplicationStartInfo#getDefiningUid()() ` Return the defining kernel user identifier, maybe different from `https://developer.android.com/reference/android/app/ApplicationStartInfo#getRealUid()` and `https://developer.android.com/reference/android/app/ApplicationStartInfo#getPackageUid()`, if an external service has the `https://developer.android.com/reference/android/R.styleable#AndroidManifestService_useAppZygote` set to ` true` and was bound with the flag `https://developer.android.com/reference/android/content/Context#BIND_EXTERNAL_SERVICE` - in this case, this field here will be the kernel user identifier of the external service provider. |
| ` https://developer.android.com/reference/android/content/Intent` | ` https://developer.android.com/reference/android/app/ApplicationStartInfo#getIntent()() ` The intent used to launch the application. |
| ` int` | ` https://developer.android.com/reference/android/app/ApplicationStartInfo#getLaunchMode()() ` An instruction on how the activity should be launched. |
| ` int` | ` https://developer.android.com/reference/android/app/ApplicationStartInfo#getPackageUid()() ` Similar to `https://developer.android.com/reference/android/app/ApplicationStartInfo#getRealUid()`, it's the kernel user identifier that is assigned at the package installation time. |
| ` int` | ` https://developer.android.com/reference/android/app/ApplicationStartInfo#getPid()() ` The process id. |
| ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/android/app/ApplicationStartInfo#getProcessName()() ` The actual process name it was running with. |
| ` int` | ` https://developer.android.com/reference/android/app/ApplicationStartInfo#getRealUid()() ` The kernel user identifier of the process, most of the time the system uses this to do access control checks. |
| ` int` | ` https://developer.android.com/reference/android/app/ApplicationStartInfo#getReason()() ` The reason code of what triggered the process's start. |
| ` int` | ` https://developer.android.com/reference/android/app/ApplicationStartInfo#getStartComponent()() ` The component type that was being started which triggered the start. |
| ` int` | ` https://developer.android.com/reference/android/app/ApplicationStartInfo#getStartType()() ` The state of the app at startup. |
| ` int` | ` https://developer.android.com/reference/android/app/ApplicationStartInfo#getStartupState()() ` Current state of startup. |
| ` https://developer.android.com/reference/java/util/Map<https://developer.android.com/reference/java/lang/Integer, https://developer.android.com/reference/java/lang/Long>` | ` https://developer.android.com/reference/android/app/ApplicationStartInfo#getStartupTimestamps()() ` Various clock monotonic timestamps in nanoseconds throughout the startup process. |
| ` int` | ` https://developer.android.com/reference/android/app/ApplicationStartInfo#hashCode()() ` Returns a hash code value for the object. |
| ` boolean` | ` https://developer.android.com/reference/android/app/ApplicationStartInfo#wasForceStopped()() ` Informs whether this is the first process launch for an app since it was `https://developer.android.com/reference/android/content/pm/ApplicationInfo#FLAG_STOPPED` for some reason. |
| ` void` | ` https://developer.android.com/reference/android/app/ApplicationStartInfo#writeToParcel(android.os.Parcel,%20int)(https://developer.android.com/reference/android/os/Parcel dest, int flags) ` Flatten this object in to a Parcel. |

### Inherited methods

From class `

https://developer.android.com/reference/java/lang/Object

` `


https://developer.android.com/reference/java/lang/Object` `
https://developer.android.com/reference/java/lang/Object#clone()()
`

Creates and returns a copy of this object.


`


boolean` `
https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj)
`

Indicates whether some other object is "equal to" this one.


`


void` `
https://developer.android.com/reference/java/lang/Object#finalize()()
`

Called by the garbage collector on an object when garbage collection
determines that there are no more references to the object.


`


final

https://developer.android.com/reference/java/lang/Class<?>` `
https://developer.android.com/reference/java/lang/Object#getClass()()
`

Returns the runtime class of this `Object`.


`


int` `
https://developer.android.com/reference/java/lang/Object#hashCode()()
`

Returns a hash code value for the object.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#notify()()
`

Wakes up a single thread that is waiting on this object's
monitor.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#notifyAll()()
`

Wakes up all threads that are waiting on this object's monitor.


`


https://developer.android.com/reference/java/lang/String` `
https://developer.android.com/reference/java/lang/Object#toString()()
`

Returns a string representation of the object.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#wait(long,%20int)(long timeoutMillis, int nanos)
`

Causes the current thread to wait until it is awakened, typically
by being *notified* or *interrupted*, or until a
certain amount of real time has elapsed.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#wait(long)(long timeoutMillis)
`

Causes the current thread to wait until it is awakened, typically
by being *notified* or *interrupted*, or until a
certain amount of real time has elapsed.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#wait()()
`

Causes the current thread to wait until it is awakened, typically
by being *notified* or *interrupted*.


From interface `

https://developer.android.com/reference/android/os/Parcelable

` `
abstract


int` `
https://developer.android.com/reference/android/os/Parcelable#describeContents()()
`

Describe the kinds of special objects contained in this Parcelable
instance's marshaled representation.


`
abstract


void` `
https://developer.android.com/reference/android/os/Parcelable#writeToParcel(android.os.Parcel,%20int)(https://developer.android.com/reference/android/os/Parcel dest, int flags)
`

Flatten this object in to a Parcel.


## Constants

### LAUNCH_MODE_SINGLE_INSTANCE

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int LAUNCH_MODE_SINGLE_INSTANCE
```

The system creates the activity at the root of a new task or locates the activity on an
existing task with the same affinity. If an instance of the activity already exists and is at
the root of the task, the system routes the intent to existing instance through a call to its
onNewIntent() method, rather than creating a new one.

<br />

Constant Value:

2
(0x00000002)


### LAUNCH_MODE_SINGLE_INSTANCE_PER_TASK

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int LAUNCH_MODE_SINGLE_INSTANCE_PER_TASK
```

The activity can only be running as the root activity of the task, the first activity that
created the task, and therefore there will only be one instance of this activity in a task;
but activity can be instantiated multiple times in different tasks.

<br />

Constant Value:

4
(0x00000004)


### LAUNCH_MODE_SINGLE_TASK

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int LAUNCH_MODE_SINGLE_TASK
```

Same as "singleTask", except that the system doesn't launch any other activities into the
task holding the instance. The activity is always the single and only member of its task.

<br />

Constant Value:

3
(0x00000003)


### LAUNCH_MODE_SINGLE_TOP

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int LAUNCH_MODE_SINGLE_TOP
```

If an instance of the activity already exists at the top of the target task, the system
routes the intent to that instance through a call to its onNewIntent() method, rather than
creating a new instance of the activity.

<br />

Constant Value:

1
(0x00000001)


### LAUNCH_MODE_STANDARD

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int LAUNCH_MODE_STANDARD
```

Default. The system always creates a new instance of the activity in the target task and
routes the intent to it.

<br />

Constant Value:

0
(0x00000000)


### STARTUP_STATE_ERROR

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int STARTUP_STATE_ERROR
```

State indicating process startup has failed. Startup information in
`https://developer.android.com/reference/android/app/ApplicationStartInfo` is incomplete, but no more will be added.

<br />

Constant Value:

1
(0x00000001)


### STARTUP_STATE_FIRST_FRAME_DRAWN

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int STARTUP_STATE_FIRST_FRAME_DRAWN
```

State indicating process startup has made it to first frame draw. Startup
information in `https://developer.android.com/reference/android/app/ApplicationStartInfo` is complete with potential exception
of fully drawn timestamp which is not guaranteed to be set.

<br />

Constant Value:

2
(0x00000002)


### STARTUP_STATE_STARTED

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int STARTUP_STATE_STARTED
```

State indicating process startup has started. Some information is available in
`https://developer.android.com/reference/android/app/ApplicationStartInfo` and more will be added.

<br />

Constant Value:

0
(0x00000000)


### START_COMPONENT_ACTIVITY

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int START_COMPONENT_ACTIVITY
```

Process was started for an activity component.

<br />

Constant Value:

1
(0x00000001)


### START_COMPONENT_BROADCAST

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int START_COMPONENT_BROADCAST
```

Process was started for a broadcast component.

<br />

Constant Value:

2
(0x00000002)


### START_COMPONENT_CONTENT_PROVIDER

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int START_COMPONENT_CONTENT_PROVIDER
```

Process was started for a content provider component.

<br />

Constant Value:

3
(0x00000003)


### START_COMPONENT_OTHER

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int START_COMPONENT_OTHER
```

Process was started not for one of the four standard components.

<br />

Constant Value:

5
(0x00000005)


### START_COMPONENT_SERVICE

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int START_COMPONENT_SERVICE
```

Process was started for a service component.

<br />

Constant Value:

4
(0x00000004)


### START_REASON_ALARM

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int START_REASON_ALARM
```

Process started due to alarm.

<br />

Constant Value:

0
(0x00000000)


### START_REASON_BACKUP

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int START_REASON_BACKUP
```

Process started to run backup.

<br />

Constant Value:

1
(0x00000001)


### START_REASON_BOOT_COMPLETE

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int START_REASON_BOOT_COMPLETE
```

Process started due to boot complete.

<br />

Constant Value:

2
(0x00000002)


### START_REASON_BROADCAST

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int START_REASON_BROADCAST
```

Process started due to broadcast received for any reason not explicitly listed.

<br />

Constant Value:

3
(0x00000003)


### START_REASON_CONTENT_PROVIDER

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int START_REASON_CONTENT_PROVIDER
```

Process started due to access of ContentProvider for any reason not explicitly listed.

<br />

Constant Value:

4
(0x00000004)


### START_REASON_JOB

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int START_REASON_JOB
```

\* Process started to run scheduled job.

<br />

Constant Value:

5
(0x00000005)


### START_REASON_LAUNCHER

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int START_REASON_LAUNCHER
```

Process started due to click app icon or widget from launcher.

<br />

Constant Value:

6
(0x00000006)


### START_REASON_LAUNCHER_RECENTS

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int START_REASON_LAUNCHER_RECENTS
```

Process started from launcher recents.

<br />

Constant Value:

7
(0x00000007)


### START_REASON_OTHER

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int START_REASON_OTHER
```

Process started not for any of the listed reasons.

<br />

Constant Value:

8
(0x00000008)


### START_REASON_PUSH

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int START_REASON_PUSH
```

Process started due to push message.

<br />

Constant Value:

9
(0x00000009)


### START_REASON_SERVICE

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int START_REASON_SERVICE
```

Process started due to Service started for any reason not explicitly listed..

<br />

Constant Value:

10
(0x0000000a)


### START_REASON_START_ACTIVITY

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int START_REASON_START_ACTIVITY
```

Process started due to Activity started for any reason not explicitly listed.

<br />

Constant Value:

11
(0x0000000b)


### START_TIMESTAMP_APPLICATION_ONCREATE

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int START_TIMESTAMP_APPLICATION_ONCREATE
```

Clock monotonic timestamp of Application onCreate called.

<br />

Constant Value:

2
(0x00000002)


### START_TIMESTAMP_BIND_APPLICATION

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int START_TIMESTAMP_BIND_APPLICATION
```

Clock monotonic timestamp of bindApplication called.

<br />

Constant Value:

3
(0x00000003)


### START_TIMESTAMP_FIRST_FRAME

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int START_TIMESTAMP_FIRST_FRAME
```

Clock monotonic timestamp of first frame drawn.

<br />

Constant Value:

4
(0x00000004)


### START_TIMESTAMP_FORK

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int START_TIMESTAMP_FORK
```

Clock monotonic timestamp of process fork.

<br />

Constant Value:

1
(0x00000001)


### START_TIMESTAMP_FULLY_DRAWN

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int START_TIMESTAMP_FULLY_DRAWN
```

Clock monotonic timestamp of reportFullyDrawn called by application.

<br />

Constant Value:

5
(0x00000005)


### START_TIMESTAMP_INITIAL_RENDERTHREAD_FRAME

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int START_TIMESTAMP_INITIAL_RENDERTHREAD_FRAME
```

Clock monotonic timestamp of initial renderthread frame.

<br />

Constant Value:

6
(0x00000006)


### START_TIMESTAMP_LAUNCH

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int START_TIMESTAMP_LAUNCH
```

Clock monotonic timestamp of launch started.

<br />

Constant Value:

0
(0x00000000)


### START_TIMESTAMP_RESERVED_RANGE_DEVELOPER

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int START_TIMESTAMP_RESERVED_RANGE_DEVELOPER
```

The end of the range reserved for developer supplied timestamps.

<br />

Constant Value:

30
(0x0000001e)


### START_TIMESTAMP_RESERVED_RANGE_DEVELOPER_START

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int START_TIMESTAMP_RESERVED_RANGE_DEVELOPER_START
```

The beginning of the range reserved for developer supplied timestamps.

<br />

Constant Value:

21
(0x00000015)


### START_TIMESTAMP_RESERVED_RANGE_SYSTEM

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int START_TIMESTAMP_RESERVED_RANGE_SYSTEM
```

The end of the range, beginning with 0, reserved for system timestamps.

<br />

Constant Value:

20
(0x00000014)


### START_TIMESTAMP_SOURCE_EVENT

Added in [version 37.2](https://developer.android.com/topic/libraries/support-library/revisions)

```
public static final int START_TIMESTAMP_SOURCE_EVENT
```

Clock monotonic timestamp of the source event which triggered this start.

The timestamp is in the `https://developer.android.com/reference/android/os/SystemClock#uptimeNanos()` timebase.

Timestamp will only be set when `https://developer.android.com/reference/android/app/ApplicationStartInfo#getStartComponent()` is equal to
`https://developer.android.com/reference/android/app/ApplicationStartInfo#START_COMPONENT_ACTIVITY`.

<br />

Constant Value:

8
(0x00000008)


### START_TIMESTAMP_SURFACEFLINGER_COMPOSITION_COMPLETE

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int START_TIMESTAMP_SURFACEFLINGER_COMPOSITION_COMPLETE
```

Clock monotonic timestamp of surfaceflinger composition complete.

<br />

Constant Value:

7
(0x00000007)


### START_TYPE_COLD

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int START_TYPE_COLD
```

Process started from scratch.

<br />

Constant Value:

1
(0x00000001)


### START_TYPE_HOT

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int START_TYPE_HOT
```

Process brought back to foreground.

<br />

Constant Value:

3
(0x00000003)


### START_TYPE_UNSET

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int START_TYPE_UNSET
```

Start type not yet set.

<br />

Constant Value:

0
(0x00000000)


### START_TYPE_WARM

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int START_TYPE_WARM
```

Process retained minimally SavedInstanceState.

<br />

Constant Value:

2
(0x00000002)


## Fields

### CREATOR

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final Creator<ApplicationStartInfo> CREATOR
```

<br />

<br />

## Public methods

### describeContents

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int describeContents ()
```

Describe the kinds of special objects contained in this Parcelable
instance's marshaled representation. For example, if the object will
include a file descriptor in the output of `https://developer.android.com/reference/android/os/Parcelable#writeToParcel(android.os.Parcel,%20int)`,
the return value of this method must include the
`https://developer.android.com/reference/android/os/Parcelable#CONTENTS_FILE_DESCRIPTOR` bit.

<br />

| Returns ||
|---|---|
| `int` | a bitmask indicating the set of special object types marshaled by this Parcelable object instance. Value is either `0` or - `https://developer.android.com/reference/android/os/Parcelable#CONTENTS_FILE_DESCRIPTOR` |

### equals

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean equals (Object other)
```

Indicates whether some other object is "equal to" this one.


The `equals` method implements an equivalence relation
on non-null object references:

- It is *reflexive*: for any non-null reference value `x`, `x.equals(x)` should return `true`.
- It is *symmetric*: for any non-null reference values `x` and `y`, `x.equals(y)` should return `true` if and only if `y.equals(x)` returns `true`.
- It is *transitive*: for any non-null reference values `x`, `y`, and `z`, if `x.equals(y)` returns `true` and `y.equals(z)` returns `true`, then `x.equals(z)` should return `true`.
- It is *consistent*: for any non-null reference values `x` and `y`, multiple invocations of `x.equals(y)` consistently return `true` or consistently return `false`, provided no information used in `equals` comparisons on the objects is modified.
- For any non-null reference value `x`, `x.equals(null)` should return `false`.


An equivalence relation partitions the elements it operates on
into *equivalence classes*; all the members of an
equivalence class are equal to each other. Members of an
equivalence class are substitutable for each other, at least
for some purposes.

<br />

| Parameters ||
|---|---|
| `other` | `Object`: This value may be `null`. <br /> |

| Returns ||
|---|---|
| `boolean` | `true` if this object is the same as the obj argument; `false` otherwise. <br /> |

### getDefiningUid

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int getDefiningUid ()
```

Return the defining kernel user identifier, maybe different from `https://developer.android.com/reference/android/app/ApplicationStartInfo#getRealUid()` and
`https://developer.android.com/reference/android/app/ApplicationStartInfo#getPackageUid()`, if an external service has the `https://developer.android.com/reference/android/R.styleable#AndroidManifestService_useAppZygote` set to `
true` and was bound with the flag `https://developer.android.com/reference/android/content/Context#BIND_EXTERNAL_SERVICE`
- in this case, this field here will be the kernel user identifier of the external service
provider.

Note: field will be set for any `https://developer.android.com/reference/android/app/ApplicationStartInfo#getStartupState()` value.

<br />

<br />

| Returns ||
|---|---|
| `int` | <br /> |

### getIntent

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Intent getIntent ()
```

The intent used to launch the application.

Note: Intent is stripped and does not include extras.

Note: field will be set for any `https://developer.android.com/reference/android/app/ApplicationStartInfo#getStartupState()` value.

<br />

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/Intent` | This value may be `null`. <br /> |

### getLaunchMode

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int getLaunchMode ()
```

An instruction on how the activity should be launched. There are five modes that work in
conjunction with activity flags in Intent objects to determine what should happen when the
activity is called upon to handle an intent.

Modes:
`https://developer.android.com/reference/android/app/ApplicationStartInfo#LAUNCH_MODE_STANDARD`
`https://developer.android.com/reference/android/app/ApplicationStartInfo#LAUNCH_MODE_SINGLE_TOP`
`https://developer.android.com/reference/android/app/ApplicationStartInfo#LAUNCH_MODE_SINGLE_INSTANCE`
`https://developer.android.com/reference/android/app/ApplicationStartInfo#LAUNCH_MODE_SINGLE_TASK`
`https://developer.android.com/reference/android/app/ApplicationStartInfo#LAUNCH_MODE_SINGLE_INSTANCE_PER_TASK`

Note: field will be set for any `https://developer.android.com/reference/android/app/ApplicationStartInfo#getStartupState()` value.

<br />

<br />

| Returns ||
|---|---|
| `int` | Value is one of the following: - `https://developer.android.com/reference/android/app/ApplicationStartInfo#LAUNCH_MODE_STANDARD` - `https://developer.android.com/reference/android/app/ApplicationStartInfo#LAUNCH_MODE_SINGLE_TOP` - `https://developer.android.com/reference/android/app/ApplicationStartInfo#LAUNCH_MODE_SINGLE_INSTANCE` - `https://developer.android.com/reference/android/app/ApplicationStartInfo#LAUNCH_MODE_SINGLE_TASK` - `https://developer.android.com/reference/android/app/ApplicationStartInfo#LAUNCH_MODE_SINGLE_INSTANCE_PER_TASK` |

### getPackageUid

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int getPackageUid ()
```

Similar to `https://developer.android.com/reference/android/app/ApplicationStartInfo#getRealUid()`, it's the kernel user identifier that is assigned at the
package installation time.

Note: field will be set for any `https://developer.android.com/reference/android/app/ApplicationStartInfo#getStartupState()` value.

<br />

<br />

| Returns ||
|---|---|
| `int` | <br /> |

### getPid

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int getPid ()
```

The process id.

Note: field will be set for any `https://developer.android.com/reference/android/app/ApplicationStartInfo#getStartupState()` value.

<br />

<br />

| Returns ||
|---|---|
| `int` | <br /> |

### getProcessName

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public String getProcessName ()
```

The actual process name it was running with.

Note: field will be set for any `https://developer.android.com/reference/android/app/ApplicationStartInfo#getStartupState()` value.

<br />

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/lang/String` | This value cannot be `null`. <br /> |

### getRealUid

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int getRealUid ()
```

The kernel user identifier of the process, most of the time the system uses this to do access
control checks. It's typically the uid of the package where the component is running from,
except the case of isolated process, where this field identifies the kernel user identifier
that this process is actually running with, while the `https://developer.android.com/reference/android/app/ApplicationStartInfo#getPackageUid()` identifies the
kernel user identifier that is assigned at the package installation time.

Note: field will be set for any `https://developer.android.com/reference/android/app/ApplicationStartInfo#getStartupState()` value.

<br />

<br />

| Returns ||
|---|---|
| `int` | <br /> |

### getReason

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int getReason ()
```

The reason code of what triggered the process's start.

Start reason provides granular reasoning on why the app is being started. Start reason should
not be used for distinguishing between the component the app is being started for as some
reasons may overlap with multiple components, see `https://developer.android.com/reference/android/app/ApplicationStartInfo#getStartComponent()` for this
functionality instead.

Note: field will be set for any `https://developer.android.com/reference/android/app/ApplicationStartInfo#getStartupState()` value.

<br />

<br />

| Returns ||
|---|---|
| `int` | Value is one of the following: - `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_REASON_ALARM` - `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_REASON_BACKUP` - `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_REASON_BOOT_COMPLETE` - `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_REASON_BROADCAST` - `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_REASON_CONTENT_PROVIDER` - `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_REASON_JOB` - `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_REASON_LAUNCHER` - `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_REASON_LAUNCHER_RECENTS` - `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_REASON_OTHER` - `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_REASON_PUSH` - `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_REASON_SERVICE` - `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_REASON_START_ACTIVITY` |

### getStartComponent

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int getStartComponent ()
```

The component type that was being started which triggered the start.

Start component should be used to accurately distinguish between the 4 component types:
activity, service, broadcast, and content provider. This can be useful for optimizing
startup flow by enabling the caller to only load the necessary dependencies for a specific
component type. For more granular information on why the app is being started, see
`https://developer.android.com/reference/android/app/ApplicationStartInfo#getReason()`.

Note: field will be set for any `https://developer.android.com/reference/android/app/ApplicationStartInfo#getStartupState()` value.

<br />

<br />

| Returns ||
|---|---|
| `int` | Value is one of the following: - `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_COMPONENT_ACTIVITY` - `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_COMPONENT_BROADCAST` - `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_COMPONENT_CONTENT_PROVIDER` - `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_COMPONENT_SERVICE` - `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_COMPONENT_OTHER` |

### getStartType

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int getStartType ()
```

The state of the app at startup.

Note: field will be set for `https://developer.android.com/reference/android/app/ApplicationStartInfo#getStartupState()` value
`https://developer.android.com/reference/android/app/ApplicationStartInfo#STARTUP_STATE_FIRST_FRAME_DRAWN`. Not guaranteed for other states.

<br />

<br />

| Returns ||
|---|---|
| `int` | Value is one of the following: - `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_TYPE_UNSET` - `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_TYPE_COLD` - `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_TYPE_WARM` - `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_TYPE_HOT` |

### getStartupState

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int getStartupState ()
```

Current state of startup.

Can be used to determine whether the object will have additional fields added as it may be
queried before all data is collected.

Note: field will always be set and available.

<br />

<br />

| Returns ||
|---|---|
| `int` | Value is one of the following: - `https://developer.android.com/reference/android/app/ApplicationStartInfo#STARTUP_STATE_STARTED` - `https://developer.android.com/reference/android/app/ApplicationStartInfo#STARTUP_STATE_ERROR` - `https://developer.android.com/reference/android/app/ApplicationStartInfo#STARTUP_STATE_FIRST_FRAME_DRAWN` |

### getStartupTimestamps

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Map<Integer, Long> getStartupTimestamps ()
```

Various clock monotonic timestamps in nanoseconds throughout the startup process.

Note: different timestamps will be available for different values of
`https://developer.android.com/reference/android/app/ApplicationStartInfo#getStartupState()`:

(Subsequent rows contain all timestamps of proceding states.)

For `https://developer.android.com/reference/android/app/ApplicationStartInfo#STARTUP_STATE_STARTED`, timestamp `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_TIMESTAMP_LAUNCH` will be
available.
For `https://developer.android.com/reference/android/app/ApplicationStartInfo#STARTUP_STATE_ERROR`, no additional timestamps are guaranteed available.
For `https://developer.android.com/reference/android/app/ApplicationStartInfo#STARTUP_STATE_FIRST_FRAME_DRAWN`, timestamps
`https://developer.android.com/reference/android/app/ApplicationStartInfo#START_TIMESTAMP_APPLICATION_ONCREATE`, `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_TIMESTAMP_BIND_APPLICATION`,
and `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_TIMESTAMP_FIRST_FRAME` will additionally be available.

Timestamp `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_TIMESTAMP_FULLY_DRAWN` is never guaranteed to be available as it is
dependant on devloper calling `https://developer.android.com/reference/android/app/Activity#reportFullyDrawn()`.


Note: The timestamp `https://developer.android.com/reference/android/app/ApplicationStartInfo#START_TIMESTAMP_LAUNCH` for starts of type
`https://developer.android.com/reference/android/app/ApplicationStartInfo#START_COMPONENT_SERVICE` may be incorrect in
`https://developer.android.com/reference/android/os/Build.VERSION_CODES#BAKLAVA` and below.

<br />

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/Map<https://developer.android.com/reference/java/lang/Integer, https://developer.android.com/reference/java/lang/Long>` | This value cannot be `null`. <br /> |

### hashCode

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int hashCode ()
```

Returns a hash code value for the object. This method is
supported for the benefit of hash tables such as those provided by
`https://developer.android.com/reference/java/util/HashMap`.


The general contract of `hashCode` is:

- Whenever it is invoked on the same object more than once during an execution of a Java application, the `hashCode` method must consistently return the same integer, provided no information used in `equals` comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.
- If two objects are equal according to the `https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)` method, then calling the `hashCode` method on each of the two objects must produce the same integer result.
- It is *not* required that if two objects are unequal according to the `https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)` method, then calling the `hashCode` method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.

<br />

<br />

| Returns ||
|---|---|
| `int` | a hash code value for this object. <br /> |

### wasForceStopped

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean wasForceStopped ()
```

Informs whether this is the first process launch for an app since it was
`https://developer.android.com/reference/android/content/pm/ApplicationInfo#FLAG_STOPPED` for some reason.
This allows the app to know if it should re-register for any alarms, jobs and other callbacks
that were cleared when the app was force-stopped.

<br />

| Returns ||
|---|---|
| `boolean` | `true` if this is the first process launch of the app after having been stopped, `false` otherwise. <br /> |

### writeToParcel

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void writeToParcel (Parcel dest, 
                int flags)
```

Flatten this object in to a Parcel.

<br />

| Parameters ||
|---|---|
| `dest` | `Parcel`: This value cannot be `null`. <br /> |
| `flags` | `int`: Additional flags about how the object should be written. May be 0 or `https://developer.android.com/reference/android/os/Parcelable#PARCELABLE_WRITE_RETURN_VALUE`. Value is either `0` or a combination of the following: - `https://developer.android.com/reference/android/os/Parcelable#PARCELABLE_WRITE_RETURN_VALUE` |