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

# StorageStats

*** ** * ** ***


`
public

final

class
StorageStats
`


`

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.usage.StorageStats |

<br />

*** ** * ** ***

Storage statistics for a UID, package, or `https://developer.android.com/reference/android/os/UserHandle` on a single
storage volume.
**See also:**

- `https://developer.android.com/reference/android/app/usage/StorageStatsManager`

## Summary

| ### Constants ||
|---|---|
| `int` | `https://developer.android.com/reference/android/app/usage/StorageStats#APP_DATA_TYPE_FILE_TYPE_APK` Represents all .apk files in application code path. |
| `int` | `https://developer.android.com/reference/android/app/usage/StorageStats#APP_DATA_TYPE_FILE_TYPE_CURRENT_PROFILE` Represents current profile of application. |
| `int` | `https://developer.android.com/reference/android/app/usage/StorageStats#APP_DATA_TYPE_FILE_TYPE_DEXOPT_ARTIFACT` Represents all nonstale dexopt and runtime artifacts of application. |
| `int` | `https://developer.android.com/reference/android/app/usage/StorageStats#APP_DATA_TYPE_FILE_TYPE_DM` Represents all .dm files in application code path. |
| `int` | `https://developer.android.com/reference/android/app/usage/StorageStats#APP_DATA_TYPE_FILE_TYPE_REFERENCE_PROFILE` Represents reference profile of application. |
| `int` | `https://developer.android.com/reference/android/app/usage/StorageStats#APP_DATA_TYPE_LIB` Represents lib/ in application code path. |

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

| ### Public methods ||
|---|---|
| ` int` | ` https://developer.android.com/reference/android/app/usage/StorageStats#describeContents()() ` Describe the kinds of special objects contained in this Parcelable instance's marshaled representation. |
| ` long` | ` https://developer.android.com/reference/android/app/usage/StorageStats#getAppBytes()() ` Return the size of app. |
| ` long` | ` https://developer.android.com/reference/android/app/usage/StorageStats#getAppBytesByDataType(int)(int dataType) ` Return the size of the specified data type. |
| ` long` | ` https://developer.android.com/reference/android/app/usage/StorageStats#getCacheBytes()() ` Return the size of all cached data. |
| ` long` | ` https://developer.android.com/reference/android/app/usage/StorageStats#getDataBytes()() ` Return the size of all data. |
| ` long` | ` https://developer.android.com/reference/android/app/usage/StorageStats#getExternalCacheBytes()() ` Return the size of all cached data in the primary external/shared storage. |
| ` void` | ` https://developer.android.com/reference/android/app/usage/StorageStats#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

### APP_DATA_TYPE_FILE_TYPE_APK

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

```
public static final int APP_DATA_TYPE_FILE_TYPE_APK
```

Represents all .apk files in application code path.
Can be used as an input to `https://developer.android.com/reference/android/app/usage/StorageStats#getAppBytesByDataType(int)`
to get the sum of sizes for files of this type.

<br />

Constant Value:

3
(0x00000003)


### APP_DATA_TYPE_FILE_TYPE_CURRENT_PROFILE

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

```
public static final int APP_DATA_TYPE_FILE_TYPE_CURRENT_PROFILE
```

Represents current profile of application.

Current profiles may or may not be used during the next profile-guided dexopt.

Can be used as an input to `https://developer.android.com/reference/android/app/usage/StorageStats#getAppBytesByDataType(int)`
to get the size of files of this type. This size fluctuates regularly,
it goes up when the user uses more and more classes/methods and comes down when
a deamon merges this into the ref profile and does profile-guided dexopt.

<br />

Constant Value:

2
(0x00000002)


### APP_DATA_TYPE_FILE_TYPE_DEXOPT_ARTIFACT

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

```
public static final int APP_DATA_TYPE_FILE_TYPE_DEXOPT_ARTIFACT
```

Represents all nonstale dexopt and runtime artifacts of application.
This includes AOT-compiled code and other data that can speed up app execution.
For more detailed information, read the
[JIT compiler](https://source.android.com/docs/core/runtime/jit-compiler#flow)
guide.

Dexopt artifacts become stale when one of their dependencies
has changed. They may be cleaned up or replaced by ART Services at any time.

For a preload app, this type includes dexopt artifacts on readonly partitions
if they are up-to-date.

Can be used as an input to `https://developer.android.com/reference/android/app/usage/StorageStats#getAppBytesByDataType(int)`
to get the sum of sizes for files of this type. The sum might include the size of data
that is part of appBytes, dataBytes or cacheBytes.

<br />

Constant Value:

0
(0x00000000)


### APP_DATA_TYPE_FILE_TYPE_DM

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

```
public static final int APP_DATA_TYPE_FILE_TYPE_DM
```

Represents all .dm files in application code path.
Can be used as an input to `https://developer.android.com/reference/android/app/usage/StorageStats#getAppBytesByDataType(int)`
to get the sum of sizes for files of this type.

<br />

Constant Value:

4
(0x00000004)


### APP_DATA_TYPE_FILE_TYPE_REFERENCE_PROFILE

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

```
public static final int APP_DATA_TYPE_FILE_TYPE_REFERENCE_PROFILE
```

Represents reference profile of application.

Reference profiles are the ones used during the last profile-guided dexopt.
If the last dexopt wasn't profile-guided, then these profiles were not used.

Can be used as an input to `https://developer.android.com/reference/android/app/usage/StorageStats#getAppBytesByDataType(int)`
to get the size of files of this type.

<br />

Constant Value:

1
(0x00000001)


### APP_DATA_TYPE_LIB

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

```
public static final int APP_DATA_TYPE_LIB
```

Represents lib/ in application code path.
Can be used as an input to `https://developer.android.com/reference/android/app/usage/StorageStats#getAppBytesByDataType(int)`
to get the size of lib/ directory.

<br />

Constant Value:

5
(0x00000005)


## Fields

### CREATOR

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

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

<br />

<br />

## Public methods

### describeContents

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

### getAppBytes

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

```
public long getAppBytes ()
```

Return the size of app. This includes `APK` files, optimized
compiler output, and unpacked native libraries.


If the primary external/shared storage is hosted on this storage device,
then this includes files stored under `https://developer.android.com/reference/android/content/Context#getObbDir()`.


Code is shared between all users on a multiuser device.


Value is a non-negative number of bytes.

<br />

| Returns ||
|---|---|
| `long` | Value is a non-negative number of bytes. <br /> |

### getAppBytesByDataType

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

```
public long getAppBytesByDataType (int dataType)
```

Return the size of the specified data type. This includes files stored under
application code path.


If there is more than one package inside a uid, the return represents the aggregated
stats when query StorageStat for package or uid.
The data is not collected and the return defaults to 0 when query StorageStats for user.


Data is isolated for each user on a multiuser device.

<br />

| Parameters ||
|---|---|
| `dataType` | `int`: Value is one of the following: - `https://developer.android.com/reference/android/app/usage/StorageStats#APP_DATA_TYPE_FILE_TYPE_DEXOPT_ARTIFACT` - `https://developer.android.com/reference/android/app/usage/StorageStats#APP_DATA_TYPE_FILE_TYPE_REFERENCE_PROFILE` - `https://developer.android.com/reference/android/app/usage/StorageStats#APP_DATA_TYPE_FILE_TYPE_CURRENT_PROFILE` - `https://developer.android.com/reference/android/app/usage/StorageStats#APP_DATA_TYPE_FILE_TYPE_APK` - `https://developer.android.com/reference/android/app/usage/StorageStats#APP_DATA_TYPE_FILE_TYPE_DM` - `https://developer.android.com/reference/android/app/usage/StorageStats#APP_DATA_TYPE_LIB` |

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

### getCacheBytes

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

```
public long getCacheBytes ()
```

Return the size of all cached data. This includes files stored under
`https://developer.android.com/reference/android/content/Context#getCacheDir()` and `https://developer.android.com/reference/android/content/Context#getCodeCacheDir()`.


If the primary external/shared storage is hosted on this storage device,
then this includes files stored under
`https://developer.android.com/reference/android/content/Context#getExternalCacheDir()`.


Cached data is isolated for each user on a multiuser device.


Value is a non-negative number of bytes.

<br />

| Returns ||
|---|---|
| `long` | Value is a non-negative number of bytes. <br /> |

### getDataBytes

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

```
public long getDataBytes ()
```

Return the size of all data. This includes files stored under
`https://developer.android.com/reference/android/content/Context#getDataDir()`, `https://developer.android.com/reference/android/content/Context#getCacheDir()`,
`https://developer.android.com/reference/android/content/Context#getCodeCacheDir()`.


If the primary external/shared storage is hosted on this storage device,
then this includes files stored under
`https://developer.android.com/reference/android/content/Context#getExternalFilesDir(java.lang.String)`,
`https://developer.android.com/reference/android/content/Context#getExternalCacheDir()`, and
`https://developer.android.com/reference/android/content/Context#getExternalMediaDirs()`.


Data is isolated for each user on a multiuser device.


Value is a non-negative number of bytes.

<br />

| Returns ||
|---|---|
| `long` | Value is a non-negative number of bytes. <br /> |

### getExternalCacheBytes

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

```
public long getExternalCacheBytes ()
```

Return the size of all cached data in the primary external/shared storage.
This includes files stored under
`https://developer.android.com/reference/android/content/Context#getExternalCacheDir()`.


Cached data is isolated for each user on a multiuser device.


Value is a non-negative number of bytes.

<br />

| Returns ||
|---|---|
| `long` | Value is a non-negative number of bytes. <br /> |

### writeToParcel

Added in [API level 26](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`: The Parcel in which the object should be written. 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` |