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

# ApplicationExitInfo

*** ** * ** ***


`
public

final

class
ApplicationExitInfo
`


`

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.ApplicationExitInfo |

<br />

*** ** * ** ***

Describes the information of an application process's death.


Application process could die for many reasons, for example `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_LOW_MEMORY`
when it was killed by the system because it was running low on memory. Reason
of the death can be retrieved via `https://developer.android.com/reference/android/app/ApplicationExitInfo#getReason()`. Besides the reason, there are a few other
auxiliary APIs like `https://developer.android.com/reference/android/app/ApplicationExitInfo#getStatus()` and `https://developer.android.com/reference/android/app/ApplicationExitInfo#getImportance()` to help the caller with
additional diagnostic information.

<br />

## Summary

| ### Nested classes ||
|---|---|
| ` class` | `https://developer.android.com/reference/android/app/ApplicationExitInfo.AnrInfo` |

| ### Constants ||
|---|---|
| `int` | `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_ANOMALY` Application process violated a system resource anomaly rule and was terminated. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_ANR` Application process was killed due to being unresponsive (ANR). |
| `int` | `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_CRASH` Application process died because of an unhandled exception in Java code. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_CRASH_NATIVE` Application process died because of a native code crash. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_DEPENDENCY_DIED` Application process was killed because its dependency was going away, for example, a stable content provider connection's client will be killed if the provider is killed. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_EXCESSIVE_RESOURCE_USAGE` Application process was killed by the system due to excessive resource usage. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_EXIT_SELF` Application process exit normally by itself, for example, via `https://developer.android.com/reference/java/lang/System#exit(int)`; `https://developer.android.com/reference/android/app/ApplicationExitInfo#getStatus()` will specify the exit code. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_FREEZER` Application process was killed by App Freezer, for example, because it receives sync binder transactions while being frozen. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_INITIALIZATION_FAILURE` Application process was killed because of initialization failure, for example, it took too long to attach to the system during the start, or there was an error during initialization. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_LOW_MEMORY` Application process was killed by the system low memory killer, meaning the system was under memory pressure at the time of kill. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_MEMORY_LIMITER` Application process was killed because it exceeded the system memory limits. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_OTHER` Application process was killed by the system for various other reasons which are not by problems in apps and not actionable by apps, for example, the system just finished updates; `https://developer.android.com/reference/android/app/ApplicationExitInfo#getDescription()` will specify the cause given by the system. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_PACKAGE_STATE_CHANGE` Application process was killed because the app was disabled, or any of its component states have changed without `https://developer.android.com/reference/android/content/pm/PackageManager#DONT_KILL_APP` Prior to `https://developer.android.com/reference/android/os/Build.VERSION_CODES#UPSIDE_DOWN_CAKE`, `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_USER_REQUESTED` was used to indicate that an app was updated. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_PACKAGE_UPDATED` Application process was killed because it was updated. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_PERMISSION_CHANGE` Application process was killed due to a runtime permission change. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_SIGNALED` Application process died due to the result of an OS signal; for example, `https://developer.android.com/reference/android/system/OsConstants#SIGKILL`; `https://developer.android.com/reference/android/app/ApplicationExitInfo#getStatus()` will specify the signal number. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_UNKNOWN` Application process died due to unknown reason. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_USER_REQUESTED` Application process was killed because of the user request, for example, user clicked the "Force stop" button of the application in the Settings, or removed the application away from Recents. |
| `int` | `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_USER_STOPPED` Application process was killed, because the user it is running as on devices with multiple users, was stopped. |

### 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/ApplicationExitInfo>` | `https://developer.android.com/reference/android/app/ApplicationExitInfo#CREATOR` |

| ### Public methods ||
|---|---|
| ` int` | ` https://developer.android.com/reference/android/app/ApplicationExitInfo#describeContents()() ` Describe the kinds of special objects contained in this Parcelable instance's marshaled representation. |
| ` boolean` | ` https://developer.android.com/reference/android/app/ApplicationExitInfo#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object other) ` Indicates whether some other object is "equal to" this one. |
| ` https://developer.android.com/reference/android/app/ApplicationExitInfo.AnrInfo` | ` https://developer.android.com/reference/android/app/ApplicationExitInfo#getAnrInfo()() ` Populated only when the reason is `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_ANR`. |
| ` int` | ` https://developer.android.com/reference/android/app/ApplicationExitInfo#getDefiningUid()() ` Return the defining kernel user identifier, maybe different from `https://developer.android.com/reference/android/app/ApplicationExitInfo#getRealUid()` and `https://developer.android.com/reference/android/app/ApplicationExitInfo#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/java/lang/String` | ` https://developer.android.com/reference/android/app/ApplicationExitInfo#getDescription()() ` The human readable description of the process's death, given by the system; could be null. |
| ` int` | ` https://developer.android.com/reference/android/app/ApplicationExitInfo#getImportance()() ` The importance of the process that it used to have before the death. |
| ` int` | ` https://developer.android.com/reference/android/app/ApplicationExitInfo#getPackageUid()() ` Similar to `https://developer.android.com/reference/android/app/ApplicationExitInfo#getRealUid()`, it's the kernel user identifier that is assigned at the package installation time. |
| ` int` | ` https://developer.android.com/reference/android/app/ApplicationExitInfo#getPid()() ` The process id of the process that died. |
| ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/android/app/ApplicationExitInfo#getProcessName()() ` The actual process name it was running with. |
| ` byte[]` | ` https://developer.android.com/reference/android/app/ApplicationExitInfo#getProcessStateSummary()() ` Return the state data set by calling `https://developer.android.com/reference/android/app/ActivityManager#setProcessStateSummary(byte[])` from the process before its death. |
| ` long` | ` https://developer.android.com/reference/android/app/ApplicationExitInfo#getPss()() ` Last proportional set size of the memory that the process had used in kB. |
| ` int` | ` https://developer.android.com/reference/android/app/ApplicationExitInfo#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/ApplicationExitInfo#getReason()() ` The reason code of the process's death. |
| ` long` | ` https://developer.android.com/reference/android/app/ApplicationExitInfo#getRss()() ` Last resident set size of the memory that the process had used in kB. |
| ` int` | ` https://developer.android.com/reference/android/app/ApplicationExitInfo#getStatus()() ` The exit status argument of exit() if the application calls it, or the signal number if the application is signaled. |
| ` long` | ` https://developer.android.com/reference/android/app/ApplicationExitInfo#getTimestamp()() ` The timestamp of the process's death, in milliseconds since the epoch, as returned by `https://developer.android.com/reference/java/lang/System#currentTimeMillis()`. |
| ` https://developer.android.com/reference/java/io/InputStream` | ` https://developer.android.com/reference/android/app/ApplicationExitInfo#getTraceInputStream()() ` Return the InputStream to the traces that was taken by the system prior to the death of the process; typically it'll be available when the reason is `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_ANR`, though if the process gets an ANR but recovers, and dies for another reason later, this trace will be included in the record of `https://developer.android.com/reference/android/app/ApplicationExitInfo` still. |
| ` https://developer.android.com/reference/android/os/UserHandle` | ` https://developer.android.com/reference/android/app/ApplicationExitInfo#getUserHandle()() ` Return the user id of the record on a multi-user system. |
| ` int` | ` https://developer.android.com/reference/android/app/ApplicationExitInfo#hashCode()() ` Returns a hash code value for the object. |
| ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/android/app/ApplicationExitInfo#toString()() ` Returns a string representation of the object. |
| ` void` | ` https://developer.android.com/reference/android/app/ApplicationExitInfo#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

### REASON_ANOMALY

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

```
public static final int REASON_ANOMALY
```

Application process violated a system resource anomaly rule and was terminated.

<br />

Constant Value:

18
(0x00000012)


### REASON_ANR

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

```
public static final int REASON_ANR
```

Application process was killed due to being unresponsive (ANR).

<br />

Constant Value:

6
(0x00000006)


### REASON_CRASH

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

```
public static final int REASON_CRASH
```

Application process died because of an unhandled exception in Java code.

<br />

Constant Value:

4
(0x00000004)


### REASON_CRASH_NATIVE

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

```
public static final int REASON_CRASH_NATIVE
```

Application process died because of a native code crash.

<br />

Constant Value:

5
(0x00000005)


### REASON_DEPENDENCY_DIED

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

```
public static final int REASON_DEPENDENCY_DIED
```

Application process was killed because its dependency was going away, for example,
a stable content provider connection's client will be killed if the provider is killed.

<br />

Constant Value:

12
(0x0000000c)


### REASON_EXCESSIVE_RESOURCE_USAGE

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

```
public static final int REASON_EXCESSIVE_RESOURCE_USAGE
```

Application process was killed by the system due to excessive resource usage.

<br />

Constant Value:

9
(0x00000009)


### REASON_EXIT_SELF

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

```
public static final int REASON_EXIT_SELF
```

Application process exit normally by itself, for example,
via `https://developer.android.com/reference/java/lang/System#exit(int)`; `https://developer.android.com/reference/android/app/ApplicationExitInfo#getStatus()` will specify the exit code.

Applications should normally not do this, as the system has a better knowledge
in terms of process management.

<br />

<br />

Constant Value:

1
(0x00000001)


### REASON_FREEZER

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

```
public static final int REASON_FREEZER
```

Application process was killed by App Freezer, for example, because it receives
sync binder transactions while being frozen.

<br />

Constant Value:

14
(0x0000000e)


### REASON_INITIALIZATION_FAILURE

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

```
public static final int REASON_INITIALIZATION_FAILURE
```

Application process was killed because of initialization failure,
for example, it took too long to attach to the system during the start,
or there was an error during initialization.

<br />

Constant Value:

7
(0x00000007)


### REASON_LOW_MEMORY

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

```
public static final int REASON_LOW_MEMORY
```

Application process was killed by the system low memory killer, meaning the system was
under memory pressure at the time of kill.


Not all devices support reporting `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_LOW_MEMORY`; on a device with no such
support, when a process is killed due to memory pressure, the `https://developer.android.com/reference/android/app/ApplicationExitInfo#getReason()` will return
`https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_SIGNALED` and `https://developer.android.com/reference/android/app/ApplicationExitInfo#getStatus()` will return
the value `https://developer.android.com/reference/android/system/OsConstants#SIGKILL`.

Application should use `https://developer.android.com/reference/android/app/ActivityManager#isLowMemoryKillReportSupported()` to check
if the device supports reporting `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_LOW_MEMORY` or not.

<br />

<br />

Constant Value:

3
(0x00000003)


### REASON_MEMORY_LIMITER

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

```
public static final int REASON_MEMORY_LIMITER
```

Application process was killed because it exceeded the system memory limits.

<br />

Constant Value:

17
(0x00000011)


### REASON_OTHER

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

```
public static final int REASON_OTHER
```

Application process was killed by the system for various other reasons which are
not by problems in apps and not actionable by apps, for example, the system just
finished updates; `https://developer.android.com/reference/android/app/ApplicationExitInfo#getDescription()` will specify the cause given by the system.

<br />

Constant Value:

13
(0x0000000d)


### REASON_PACKAGE_STATE_CHANGE

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

```
public static final int REASON_PACKAGE_STATE_CHANGE
```

Application process was killed because the app was disabled, or any of its
component states have changed without `https://developer.android.com/reference/android/content/pm/PackageManager#DONT_KILL_APP`


Prior to `https://developer.android.com/reference/android/os/Build.VERSION_CODES#UPSIDE_DOWN_CAKE`,
`https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_USER_REQUESTED` was used to indicate that an app was updated.

<br />

Constant Value:

15
(0x0000000f)


### REASON_PACKAGE_UPDATED

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

```
public static final int REASON_PACKAGE_UPDATED
```

Application process was killed because it was updated.


Prior to `https://developer.android.com/reference/android/os/Build.VERSION_CODES#UPSIDE_DOWN_CAKE`,
`https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_USER_REQUESTED` was used to indicate that an app was updated.

<br />

Constant Value:

16
(0x00000010)


### REASON_PERMISSION_CHANGE

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

```
public static final int REASON_PERMISSION_CHANGE
```

Application process was killed due to a runtime permission change.

<br />

Constant Value:

8
(0x00000008)


### REASON_SIGNALED

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

```
public static final int REASON_SIGNALED
```

Application process died due to the result of an OS signal; for example,
`https://developer.android.com/reference/android/system/OsConstants#SIGKILL`; `https://developer.android.com/reference/android/app/ApplicationExitInfo#getStatus()` will specify the signal
number.

<br />

Constant Value:

2
(0x00000002)


### REASON_UNKNOWN

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

```
public static final int REASON_UNKNOWN
```

Application process died due to unknown reason.

<br />

Constant Value:

0
(0x00000000)


### REASON_USER_REQUESTED

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

```
public static final int REASON_USER_REQUESTED
```

Application process was killed because of the user request, for example,
user clicked the "Force stop" button of the application in the Settings,
or removed the application away from Recents.


Prior to `https://developer.android.com/reference/android/os/Build.VERSION_CODES#UPSIDE_DOWN_CAKE`, one of the uses of this
reason was to indicate that an app was killed due to it being updated or any of its component
states have changed without `https://developer.android.com/reference/android/content/pm/PackageManager#DONT_KILL_APP`

<br />

Constant Value:

10
(0x0000000a)


### REASON_USER_STOPPED

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

```
public static final int REASON_USER_STOPPED
```

Application process was killed, because the user it is running as on devices
with multiple users, was stopped.

<br />

Constant Value:

11
(0x0000000b)


## Fields

### CREATOR

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

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

<br />

<br />

## Public methods

### describeContents

Added in [API level 30](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 30](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 /> |

### getAnrInfo

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

```
public ApplicationExitInfo.AnrInfo getAnrInfo ()
```

Populated only when the reason is `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_ANR`. Otherwise Null.

<br />

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

### getDefiningUid

Added in [API level 30](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/ApplicationExitInfo#getRealUid()` and
`https://developer.android.com/reference/android/app/ApplicationExitInfo#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.

<br />

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

### getDescription

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

```
public String getDescription ()
```

The human readable description of the process's death, given by the system; could be null.

Note: only intended to be human-readable and the system provides no
guarantees that the format is stable across devices or Android releases.

<br />

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/lang/String` | <br /> |

### getImportance

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

```
public int getImportance ()
```

The importance of the process that it used to have before the death.

<br />

| Returns ||
|---|---|
| `int` | Value is one of the following: - `https://developer.android.com/reference/android/app/ActivityManager.RunningAppProcessInfo#IMPORTANCE_FOREGROUND` - `https://developer.android.com/reference/android/app/ActivityManager.RunningAppProcessInfo#IMPORTANCE_FOREGROUND_SERVICE` - `https://developer.android.com/reference/android/app/ActivityManager.RunningAppProcessInfo#IMPORTANCE_TOP_SLEEPING` - `https://developer.android.com/reference/android/app/ActivityManager.RunningAppProcessInfo#IMPORTANCE_VISIBLE` - `https://developer.android.com/reference/android/app/ActivityManager.RunningAppProcessInfo#IMPORTANCE_PERCEPTIBLE` - `https://developer.android.com/reference/android/app/ActivityManager.RunningAppProcessInfo#IMPORTANCE_CANT_SAVE_STATE` - `https://developer.android.com/reference/android/app/ActivityManager.RunningAppProcessInfo#IMPORTANCE_SERVICE` - `https://developer.android.com/reference/android/app/ActivityManager.RunningAppProcessInfo#IMPORTANCE_CACHED` - `https://developer.android.com/reference/android/app/ActivityManager.RunningAppProcessInfo#IMPORTANCE_GONE` |

### getPackageUid

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

```
public int getPackageUid ()
```

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

<br />

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

### getPid

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

```
public int getPid ()
```

The process id of the process that died.

<br />

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

### getProcessName

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

```
public String getProcessName ()
```

The actual process name it was running with.

<br />

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

### getProcessStateSummary

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

```
public byte[] getProcessStateSummary ()
```

Return the state data set by calling
`https://developer.android.com/reference/android/app/ActivityManager#setProcessStateSummary(byte[])` from the process before its death.

<br />

| Returns ||
|---|---|
| `byte[]` | The process-customized data. This value may be `null`. <br /> |

**See also:**

- `https://developer.android.com/reference/android/app/ActivityManager#setProcessStateSummary(byte[])`

### getPss

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

```
public long getPss ()
```

Last proportional set size of the memory that the process had used in kB.

Note: This is the value from last sampling on the process,
it's NOT the exact memory information prior to its death; and it'll be zero
if the process died before system had a chance to take the sample.

<br />

<br />

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

### getRealUid

Added in [API level 30](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/ApplicationExitInfo#getPackageUid()`
identifies the kernel user identifier that is assigned at the package installation time.

<br />

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

### getReason

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

```
public int getReason ()
```

The reason code of the process's death.

<br />

| Returns ||
|---|---|
| `int` | Value is one of the following: - `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_UNKNOWN` - `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_EXIT_SELF` - `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_SIGNALED` - `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_LOW_MEMORY` - `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_CRASH` - `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_CRASH_NATIVE` - `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_ANR` - `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_INITIALIZATION_FAILURE` - `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_PERMISSION_CHANGE` - `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_EXCESSIVE_RESOURCE_USAGE` - `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_USER_REQUESTED` - `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_USER_STOPPED` - `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_DEPENDENCY_DIED` - `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_OTHER` - `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_FREEZER` - `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_PACKAGE_STATE_CHANGE` - `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_PACKAGE_UPDATED` - `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_MEMORY_LIMITER` - `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_ANOMALY` |

### getRss

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

```
public long getRss ()
```

Last resident set size of the memory that the process had used in kB.

Note: This is the value from last sampling on the process,
it's NOT the exact memory information prior to its death; and it'll be zero
if the process died before system had a chance to take the sample.

<br />

<br />

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

### getStatus

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

```
public int getStatus ()
```

The exit status argument of exit() if the application calls it, or the signal
number if the application is signaled.

<br />

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

### getTimestamp

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

```
public long getTimestamp ()
```

The timestamp of the process's death, in milliseconds since the epoch,
as returned by `https://developer.android.com/reference/java/lang/System#currentTimeMillis()`.


Value is a non-negative timestamp measured as the number of
milliseconds since 1970-01-01T00:00:00Z.

<br />

| Returns ||
|---|---|
| `long` | Value is a non-negative timestamp measured as the number of milliseconds since 1970-01-01T00:00:00Z. <br /> |

### getTraceInputStream

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

```
public InputStream getTraceInputStream ()
```

Return the InputStream to the traces that was taken by the system
prior to the death of the process; typically it'll be available when
the reason is `https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_ANR`, though if the process gets an ANR
but recovers, and dies for another reason later, this trace will be included
in the record of `https://developer.android.com/reference/android/app/ApplicationExitInfo` still. Beginning with API 31,
tombstone traces will be returned for
`https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_CRASH_NATIVE`, with an InputStream containing a protobuf with
[this schema](https://android.googlesource.com/platform/system/core/+/refs/heads/master/debuggerd/proto/tombstone.proto).
Note that because these traces are kept in a separate global circular buffer, crashes may be
overwritten by newer crashes (including from other applications), so this may still return
null.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/io/InputStream` | The input stream to the traces that was taken by the system prior to the death of the process. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/io/IOException` |   |

### getUserHandle

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

```
public UserHandle getUserHandle ()
```

Return the user id of the record on a multi-user system.

<br />

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

### hashCode

Added in [API level 30](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 /> |

### toString

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

```
public String toString ()
```

Returns a string representation of the object.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/lang/String` | a string representation of the object. <br /> |

### writeToParcel

Added in [API level 30](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` |