# TraceEvent

Artifact: [androidx.tracing:tracing](https://developer.android.com/jetpack/androidx/releases/tracing) [View Source](https://cs.android.com/search?q=file:androidx/tracing/TraceEvent.kt+class:androidx.tracing.TraceEvent) Added in [2.0.5](https://developer.android.com/jetpack/androidx/releases/tracing#2.0.5)

*** ** * ** ***


```
@DelicateTracingApi
public final class TraceEvent
```

<br />

*** ** * ** ***

Mutable in-memory only representation a trace event, such as a slice start, slice end, or counter update.

This structure is optimized for performance, with the expectation that these are created by a trace event, and passed to a background thread to be serialized. Mutability (and thus reuse) is an important component of this.

Code outside of tracing-driver implementation should only ever consume these objects, not produce them.

## Summary

| ### Public fields |
|---|---|
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/util/List.html<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/tracing/AttributeEntry>` | `https://developer.android.com/reference/androidx/tracing/TraceEvent#attributes()` The list of trace attributes associated with the trace. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/util/List.html<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html>` | `https://developer.android.com/reference/androidx/tracing/TraceEvent#categories()` The categories that this Trace Event belongs to. |
| `final https://developer.android.com/reference/java/lang/Long.html` | `https://developer.android.com/reference/androidx/tracing/TraceEvent#correlationId()` The optional correlation id associated with the event. |
| `final https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/tracing/TraceEvent#correlationIdString()` The optional correlation id as `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` that is associated with the event. |
| `final https://developer.android.com/reference/java/lang/Double.html` | `https://developer.android.com/reference/androidx/tracing/TraceEvent#counterDoubleValue()` Value of the trace event if the event `https://developer.android.com/reference/androidx/tracing/TraceEvent#(kotlin.Int,kotlin.Long,kotlin.Long,kotlin.String,kotlin.Double,kotlin.Long,kotlin.Long,kotlin.String,kotlin.collections.List,androidx.tracing.TrackDescriptor,kotlin.String,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int)` is `https://developer.android.com/reference/androidx/tracing/package-summary#TRACE_EVENT_TYPE_COUNTER()`. |
| `final https://developer.android.com/reference/java/lang/Long.html` | `https://developer.android.com/reference/androidx/tracing/TraceEvent#counterLongValue()` Value of the trace event if the event `https://developer.android.com/reference/androidx/tracing/TraceEvent#(kotlin.Int,kotlin.Long,kotlin.Long,kotlin.String,kotlin.Double,kotlin.Long,kotlin.Long,kotlin.String,kotlin.collections.List,androidx.tracing.TrackDescriptor,kotlin.String,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int)` is `https://developer.android.com/reference/androidx/tracing/package-summary#TRACE_EVENT_TYPE_COUNTER()`. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/util/List.html<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/Long.html>` | `https://developer.android.com/reference/androidx/tracing/TraceEvent#flowIds()` List of trace flows associated with this event. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/util/List.html<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/tracing/Frame>` | `https://developer.android.com/reference/androidx/tracing/TraceEvent#frames()` A list of call stack frames that can be associated to the `https://developer.android.com/reference/androidx/tracing/TraceEvent`. |
| `final int` | `https://developer.android.com/reference/androidx/tracing/TraceEvent#lastAttributeIndex()` Keeping track of the index separately for `https://developer.android.com/reference/androidx/tracing/TraceEvent#(kotlin.Int,kotlin.Long,kotlin.Long,kotlin.String,kotlin.Double,kotlin.Long,kotlin.Long,kotlin.String,kotlin.collections.List,androidx.tracing.TrackDescriptor,kotlin.String,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int)`, because the `MutableList` is pre-allocated with sentinel objects for performance reasons. |
| `final int` | `https://developer.android.com/reference/androidx/tracing/TraceEvent#lastCategoryIndex()` Keeping track of the index separately for `https://developer.android.com/reference/androidx/tracing/TraceEvent#(kotlin.Int,kotlin.Long,kotlin.Long,kotlin.String,kotlin.Double,kotlin.Long,kotlin.Long,kotlin.String,kotlin.collections.List,androidx.tracing.TrackDescriptor,kotlin.String,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int)`, because the `MutableList` is pre-allocated with sentinel objects for performance reasons. |
| `final int` | `https://developer.android.com/reference/androidx/tracing/TraceEvent#lastFrameIndex()` Keeping track of the index separately for `https://developer.android.com/reference/androidx/tracing/TraceEvent#(kotlin.Int,kotlin.Long,kotlin.Long,kotlin.String,kotlin.Double,kotlin.Long,kotlin.Long,kotlin.String,kotlin.collections.List,androidx.tracing.TrackDescriptor,kotlin.String,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int)`, because the `MutableList` is pre-allocated with sentinel objects for performance reasons. |
| `final int` | `https://developer.android.com/reference/androidx/tracing/TraceEvent#lastMetadataEntryIndex()` Keeping track of the index separately, because the MutableList is pre-allocated with sentinel objects for performance reasons. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/util/List.html<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/tracing/MetadataEntry>` | `https://developer.android.com/reference/androidx/tracing/TraceEvent#metadataEntries()` The list of debug annotations associated with a slice |
| `final https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/tracing/TraceEvent#name()` Name of the trace event - null if the event `https://developer.android.com/reference/androidx/tracing/TraceEvent#(kotlin.Int,kotlin.Long,kotlin.Long,kotlin.String,kotlin.Double,kotlin.Long,kotlin.Long,kotlin.String,kotlin.collections.List,androidx.tracing.TrackDescriptor,kotlin.String,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int)` is `https://developer.android.com/reference/androidx/tracing/package-summary#TRACE_EVENT_TYPE_COUNTER()`. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/tracing/TraceEvent#primaryCategory()` The primary category that this trace event belongs to. |
| `final long` | `https://developer.android.com/reference/androidx/tracing/TraceEvent#timestamp()` Timestamp in nanoseconds of the trace event. |
| `final https://developer.android.com/reference/androidx/tracing/TrackDescriptor` | `https://developer.android.com/reference/androidx/tracing/TraceEvent#trackDescriptor()` If not null, this TraceEvent initializes a track, and the `https://developer.android.com/reference/androidx/tracing/TrackDescriptor` defines its properties. |
| `final long` | `https://developer.android.com/reference/androidx/tracing/TraceEvent#trackUuid()` Set to the value of the containing `https://developer.android.com/reference/androidx/tracing/Track`'s `https://developer.android.com/reference/androidx/tracing/Track#uuid()`. |
| `final int` | `https://developer.android.com/reference/androidx/tracing/TraceEvent#type()` Must be one of `https://developer.android.com/reference/androidx/tracing/package-summary#TRACE_EVENT_TYPE_UNDEFINED()`, `https://developer.android.com/reference/androidx/tracing/package-summary#TRACE_EVENT_TYPE_INSTANT()`, `https://developer.android.com/reference/androidx/tracing/package-summary#TRACE_EVENT_TYPE_BEGIN()`, `https://developer.android.com/reference/androidx/tracing/package-summary#TRACE_EVENT_TYPE_END()`, `https://developer.android.com/reference/androidx/tracing/package-summary#TRACE_EVENT_TYPE_COUNTER()` |

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/tracing/TraceEvent#TraceEvent()()` |

| ### Public methods |
|---|---|
| `final void` | `https://developer.android.com/reference/androidx/tracing/TraceEvent#copyFrom(androidx.tracing.TraceEvent)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/tracing/TraceEvent src)` |
| `final void` | `https://developer.android.com/reference/androidx/tracing/TraceEvent#reset()()` |

## Public fields

### attributes

Added in [2.0.5](https://developer.android.com/jetpack/androidx/releases/tracing#2.0.5)

```
public final @NonNull List<@NonNull AttributeEntry> attributes
```

The list of trace attributes associated with the trace.

### categories

Added in [2.0.5](https://developer.android.com/jetpack/androidx/releases/tracing#2.0.5)

```
public final @NonNull List<@NonNull String> categories
```

The categories that this Trace Event belongs to.

### correlationId

Added in [2.0.5](https://developer.android.com/jetpack/androidx/releases/tracing#2.0.5)

```
public final Long correlationId
```

The optional correlation id associated with the event.

### correlationIdString

Added in [2.0.5](https://developer.android.com/jetpack/androidx/releases/tracing#2.0.5)

```
public final String correlationIdString
```

The optional correlation id as `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` that is associated with the event.

### counterDoubleValue

Added in [2.0.5](https://developer.android.com/jetpack/androidx/releases/tracing#2.0.5)

```
public final Double counterDoubleValue
```

Value of the trace event if the event `https://developer.android.com/reference/androidx/tracing/TraceEvent#(kotlin.Int,kotlin.Long,kotlin.Long,kotlin.String,kotlin.Double,kotlin.Long,kotlin.Long,kotlin.String,kotlin.collections.List,androidx.tracing.TrackDescriptor,kotlin.String,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int)` is `https://developer.android.com/reference/androidx/tracing/package-summary#TRACE_EVENT_TYPE_COUNTER()`.

Note that only one of `https://developer.android.com/reference/androidx/tracing/TraceEvent#(kotlin.Int,kotlin.Long,kotlin.Long,kotlin.String,kotlin.Double,kotlin.Long,kotlin.Long,kotlin.String,kotlin.collections.List,androidx.tracing.TrackDescriptor,kotlin.String,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int)` and `https://developer.android.com/reference/androidx/tracing/TraceEvent#(kotlin.Int,kotlin.Long,kotlin.Long,kotlin.String,kotlin.Double,kotlin.Long,kotlin.Long,kotlin.String,kotlin.collections.List,androidx.tracing.TrackDescriptor,kotlin.String,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int)` may be set.

### counterLongValue

Added in [2.0.5](https://developer.android.com/jetpack/androidx/releases/tracing#2.0.5)

```
public final Long counterLongValue
```

Value of the trace event if the event `https://developer.android.com/reference/androidx/tracing/TraceEvent#(kotlin.Int,kotlin.Long,kotlin.Long,kotlin.String,kotlin.Double,kotlin.Long,kotlin.Long,kotlin.String,kotlin.collections.List,androidx.tracing.TrackDescriptor,kotlin.String,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int)` is `https://developer.android.com/reference/androidx/tracing/package-summary#TRACE_EVENT_TYPE_COUNTER()`.

Note that only one of `https://developer.android.com/reference/androidx/tracing/TraceEvent#(kotlin.Int,kotlin.Long,kotlin.Long,kotlin.String,kotlin.Double,kotlin.Long,kotlin.Long,kotlin.String,kotlin.collections.List,androidx.tracing.TrackDescriptor,kotlin.String,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int)` and `https://developer.android.com/reference/androidx/tracing/TraceEvent#(kotlin.Int,kotlin.Long,kotlin.Long,kotlin.String,kotlin.Double,kotlin.Long,kotlin.Long,kotlin.String,kotlin.collections.List,androidx.tracing.TrackDescriptor,kotlin.String,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int)` may be set.

### flowIds

Added in [2.0.5](https://developer.android.com/jetpack/androidx/releases/tracing#2.0.5)

```
public final @NonNull List<@NonNull Long> flowIds
```

List of trace flows associated with this event.

### frames

Added in [2.0.5](https://developer.android.com/jetpack/androidx/releases/tracing#2.0.5)

```
public final @NonNull List<@NonNull Frame> frames
```

A list of call stack frames that can be associated to the `https://developer.android.com/reference/androidx/tracing/TraceEvent`.

### lastAttributeIndex

Added in [2.0.5](https://developer.android.com/jetpack/androidx/releases/tracing#2.0.5)

```
public final int lastAttributeIndex
```

Keeping track of the index separately for `https://developer.android.com/reference/androidx/tracing/TraceEvent#(kotlin.Int,kotlin.Long,kotlin.Long,kotlin.String,kotlin.Double,kotlin.Long,kotlin.Long,kotlin.String,kotlin.collections.List,androidx.tracing.TrackDescriptor,kotlin.String,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int)`, because the `MutableList` is pre-allocated with sentinel objects for performance reasons. This `index` can be used to determine the true `size` of the `https://developer.android.com/reference/androidx/tracing/TraceEvent#(kotlin.Int,kotlin.Long,kotlin.Long,kotlin.String,kotlin.Double,kotlin.Long,kotlin.Long,kotlin.String,kotlin.collections.List,androidx.tracing.TrackDescriptor,kotlin.String,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int)` `MutableList`.

### lastCategoryIndex

Added in [2.0.5](https://developer.android.com/jetpack/androidx/releases/tracing#2.0.5)

```
public final int lastCategoryIndex
```

Keeping track of the index separately for `https://developer.android.com/reference/androidx/tracing/TraceEvent#(kotlin.Int,kotlin.Long,kotlin.Long,kotlin.String,kotlin.Double,kotlin.Long,kotlin.Long,kotlin.String,kotlin.collections.List,androidx.tracing.TrackDescriptor,kotlin.String,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int)`, because the `MutableList` is pre-allocated with sentinel objects for performance reasons. This `index` can be used to determine the true `size` of the `https://developer.android.com/reference/androidx/tracing/TraceEvent#(kotlin.Int,kotlin.Long,kotlin.Long,kotlin.String,kotlin.Double,kotlin.Long,kotlin.Long,kotlin.String,kotlin.collections.List,androidx.tracing.TrackDescriptor,kotlin.String,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int)` `MutableList`.

### lastFrameIndex

Added in [2.0.5](https://developer.android.com/jetpack/androidx/releases/tracing#2.0.5)

```
public final int lastFrameIndex
```

Keeping track of the index separately for `https://developer.android.com/reference/androidx/tracing/TraceEvent#(kotlin.Int,kotlin.Long,kotlin.Long,kotlin.String,kotlin.Double,kotlin.Long,kotlin.Long,kotlin.String,kotlin.collections.List,androidx.tracing.TrackDescriptor,kotlin.String,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int)`, because the `MutableList` is pre-allocated with sentinel objects for performance reasons. This `index` can be used to determine the true `size` of the `https://developer.android.com/reference/androidx/tracing/TraceEvent#(kotlin.Int,kotlin.Long,kotlin.Long,kotlin.String,kotlin.Double,kotlin.Long,kotlin.Long,kotlin.String,kotlin.collections.List,androidx.tracing.TrackDescriptor,kotlin.String,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int)` `MutableList`.

### lastMetadataEntryIndex

Added in [2.0.5](https://developer.android.com/jetpack/androidx/releases/tracing#2.0.5)

```
public final int lastMetadataEntryIndex
```

Keeping track of the index separately, because the MutableList is pre-allocated with sentinel objects for performance reasons. This `index` can be used to determine the true `size` of the `https://developer.android.com/reference/androidx/tracing/TraceEvent#(kotlin.Int,kotlin.Long,kotlin.Long,kotlin.String,kotlin.Double,kotlin.Long,kotlin.Long,kotlin.String,kotlin.collections.List,androidx.tracing.TrackDescriptor,kotlin.String,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int)` `MutableList`.

### metadataEntries

Added in [2.0.5](https://developer.android.com/jetpack/androidx/releases/tracing#2.0.5)

```
public final @NonNull List<@NonNull MetadataEntry> metadataEntries
```

The list of debug annotations associated with a slice

### name

Added in [2.0.5](https://developer.android.com/jetpack/androidx/releases/tracing#2.0.5)

```
public final String name
```

Name of the trace event - null if the event `https://developer.android.com/reference/androidx/tracing/TraceEvent#(kotlin.Int,kotlin.Long,kotlin.Long,kotlin.String,kotlin.Double,kotlin.Long,kotlin.Long,kotlin.String,kotlin.collections.List,androidx.tracing.TrackDescriptor,kotlin.String,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int,kotlin.collections.MutableList,kotlin.Int)` is `https://developer.android.com/reference/androidx/tracing/package-summary#TRACE_EVENT_TYPE_COUNTER()`.

### primaryCategory

Added in [2.0.5](https://developer.android.com/jetpack/androidx/releases/tracing#2.0.5)

```
public final @NonNull String primaryCategory
```

The primary category that this trace event belongs to.

### timestamp

Added in [2.0.5](https://developer.android.com/jetpack/androidx/releases/tracing#2.0.5)

```
public final long timestamp
```

Timestamp in nanoseconds of the trace event.

### trackDescriptor

Added in [2.0.5](https://developer.android.com/jetpack/androidx/releases/tracing#2.0.5)

```
public final TrackDescriptor trackDescriptor
```

If not null, this TraceEvent initializes a track, and the `https://developer.android.com/reference/androidx/tracing/TrackDescriptor` defines its properties.

### trackUuid

Added in [2.0.5](https://developer.android.com/jetpack/androidx/releases/tracing#2.0.5)

```
public final long trackUuid
```

Set to the value of the containing `https://developer.android.com/reference/androidx/tracing/Track`'s `https://developer.android.com/reference/androidx/tracing/Track#uuid()`.

### type

Added in [2.0.5](https://developer.android.com/jetpack/androidx/releases/tracing#2.0.5)

```
public final int type
```

Must be one of `https://developer.android.com/reference/androidx/tracing/package-summary#TRACE_EVENT_TYPE_UNDEFINED()`, `https://developer.android.com/reference/androidx/tracing/package-summary#TRACE_EVENT_TYPE_INSTANT()`, `https://developer.android.com/reference/androidx/tracing/package-summary#TRACE_EVENT_TYPE_BEGIN()`, `https://developer.android.com/reference/androidx/tracing/package-summary#TRACE_EVENT_TYPE_END()`, `https://developer.android.com/reference/androidx/tracing/package-summary#TRACE_EVENT_TYPE_COUNTER()`

## Public constructors

### TraceEvent

Added in [2.0.5](https://developer.android.com/jetpack/androidx/releases/tracing#2.0.5)

```
public TraceEvent()
```

## Public methods

### copyFrom

Added in [2.0.5](https://developer.android.com/jetpack/androidx/releases/tracing#2.0.5)

```
public final void copyFrom(@NonNull TraceEvent src)
```

### reset

Added in [2.0.5](https://developer.android.com/jetpack/androidx/releases/tracing#2.0.5)

```
public final void reset()
```