# StackSamplingRequestBuilder

Artifact: [androidx.core:core](https://developer.android.com/jetpack/androidx/releases/core) [View Source](https://cs.android.com/search?q=file:androidx/core/os/Profiling.kt+class:androidx.core.os.StackSamplingRequestBuilder) Added in [1.15.0](https://developer.android.com/jetpack/androidx/releases/core#1.15.0)

*** ** * ** ***


```
@RequiresApi(api = 35)
class StackSamplingRequestBuilder : ProfilingRequestBuilder<StackSamplingRequestBuilder>
```

<br />

|---|---|---|
| [kotlin.Any](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html) |||
| ↳ | [androidx.core.os.ProfilingRequestBuilder](https://developer.android.com/reference/kotlin/androidx/core/os/ProfilingRequestBuilder)\<[StackSamplingRequestBuilder](https://developer.android.com/reference/kotlin/androidx/core/os/StackSamplingRequestBuilder)\> ||
|   | ↳ | [androidx.core.os.StackSamplingRequestBuilder](https://developer.android.com/reference/kotlin/androidx/core/os/StackSamplingRequestBuilder) |

*** ** * ** ***

Request builder to create a request for stack sampling from `https://developer.android.com/reference/android/os/ProfilingManager.html`.

```kotlin
val listener =
    Consumer<ProfilingResult> { profilingResult ->
        if (profilingResult.errorCode == ProfilingResult.ERROR_NONE) {
            doSomethingWithMyFile(profilingResult.resultFilePath)
        } else {
            doSomethingWithFailure(profilingResult.errorCode, profilingResult.errorMessage)
        }
    }

val cancellationSignal = CancellationSignal()

requestProfiling(
    context,
    StackSamplingRequestBuilder()
        .setBufferSizeKb(1000 /* Requested buffer size in KB */)
        .setDurationMs(10 * 1000 /* Requested profiling duration in millisconds */)
        .setSamplingFrequencyHz(100 /* Requested sampling frequency */)
        .setTag("tag" /* Caller supplied tag for identification */)
        .setCancellationSignal(cancellationSignal)
        .build(),
    Dispatchers.IO.asExecutor(), // Your choice of executor for the callback to occur on.
    listener,
)

// Optionally, wait for something interesting to happen and then stop the profiling to receive
// the result as is.
cancellationSignal.cancel()
```

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/kotlin/androidx/core/os/StackSamplingRequestBuilder#StackSamplingRequestBuilder()()` |

| ### Public functions |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/core/os/StackSamplingRequestBuilder` | `https://developer.android.com/reference/kotlin/androidx/core/os/StackSamplingRequestBuilder#setBufferSizeKb(kotlin.Int)(bufferSizeKb: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)` Set the buffer size in kilobytes for this profiling request. |
| `https://developer.android.com/reference/kotlin/androidx/core/os/StackSamplingRequestBuilder` | `https://developer.android.com/reference/kotlin/androidx/core/os/StackSamplingRequestBuilder#setDurationMs(kotlin.Int)(durationMs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)` Set the duration in milliseconds for this profiling request. |
| `https://developer.android.com/reference/kotlin/androidx/core/os/StackSamplingRequestBuilder` | `https://developer.android.com/reference/kotlin/androidx/core/os/StackSamplingRequestBuilder#setSamplingFrequencyHz(kotlin.Int)(samplingFrequencyHz: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)` Set the cpu sampling frequency. |

### Inherited functions

From [androidx.core.os.ProfilingRequestBuilder](https://developer.android.com/reference/kotlin/androidx/core/os/ProfilingRequestBuilder) `https://developer.android.com/reference/kotlin/androidx/core/os/ProfilingRequest` `https://developer.android.com/reference/kotlin/androidx/core/os/ProfilingRequestBuilder#build()()`

Build the `https://developer.android.com/reference/kotlin/androidx/core/os/ProfilingRequest` object which can be used with `https://developer.android.com/reference/kotlin/androidx/core/os/package-summary#requestProfiling(android.content.Context,androidx.core.os.ProfilingRequest,java.util.concurrent.Executor,java.util.function.Consumer)` to request profiling.
`https://developer.android.com/reference/kotlin/androidx/core/os/StackSamplingRequestBuilder` `https://developer.android.com/reference/kotlin/androidx/core/os/ProfilingRequestBuilder#setCancellationSignal(android.os.CancellationSignal)(cancellationSignal: https://developer.android.com/reference/android/os/CancellationSignal.html)`

Set a CancellationSignal to request cancellation of the requested trace.
`https://developer.android.com/reference/kotlin/androidx/core/os/StackSamplingRequestBuilder` `https://developer.android.com/reference/kotlin/androidx/core/os/ProfilingRequestBuilder#setTag(kotlin.String)(tag: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)`

Add data to help identify the output.

## Public constructors

### StackSamplingRequestBuilder

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

```
StackSamplingRequestBuilder()
```

## Public functions

### setBufferSizeKb

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

```
fun setBufferSizeKb(bufferSizeKb: Int): StackSamplingRequestBuilder
```

Set the buffer size in kilobytes for this profiling request.

### setDurationMs

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

```
fun setDurationMs(durationMs: Int): StackSamplingRequestBuilder
```

Set the duration in milliseconds for this profiling request.

### setSamplingFrequencyHz

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

```
fun setSamplingFrequencyHz(samplingFrequencyHz: Int): StackSamplingRequestBuilder
```

Set the cpu sampling frequency.