# JankStats.OnFrameListener

Artifact: [androidx.metrics:metrics-performance](https://developer.android.com/jetpack/androidx/releases/metrics) [View Source](https://cs.android.com/search?q=file:androidx/metrics/performance/JankStats.kt+class:androidx.metrics.performance.JankStats.OnFrameListener) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/metrics#1.0.0)

*** ** * ** ***


```
public fun interface JankStats.OnFrameListener
```

<br />

*** ** * ** ***

This interface should be implemented to receive per-frame callbacks with jank data.

Internally, the `https://developer.android.com/reference/androidx/metrics/performance/FrameData` objected passed to `https://developer.android.com/reference/androidx/metrics/performance/JankStats.OnFrameListener#onFrame(androidx.metrics.performance.FrameData)` is reused and populated with new data on every frame. This means that listeners implementing `https://developer.android.com/reference/androidx/metrics/performance/JankStats.OnFrameListener` cannot depend on the data received in that structure over time and should consider the `https://developer.android.com/reference/androidx/metrics/performance/FrameData` object **obsolete when control returns from the listener** . Clients wishing to retain data from this call should **copy the data elsewhere before returning**.

## Summary

| ### Public methods |
|---|---|
| `abstract void` | `https://developer.android.com/reference/androidx/metrics/performance/JankStats.OnFrameListener#onFrame(androidx.metrics.performance.FrameData)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/metrics/performance/FrameData volatileFrameData)` The implementation of this method will be called on every frame when an OnFrameListener is set on this JankStats object. |

## Public methods

### onFrame

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

```
abstract void onFrame(@NonNull FrameData volatileFrameData)
```

The implementation of this method will be called on every frame when an OnFrameListener is set on this JankStats object.

The FrameData object **will be modified internally after returning from the listener**; any data that needs to be retained should be copied before returning.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/metrics/performance/FrameData volatileFrameData` | The data for the most recent frame. |