ProfilingManager


public final class ProfilingManager
extends Object

java.lang.Object
   ↳ android.os.ProfilingManager


API for apps to request and listen for app specific profiling.

Summary

Constants

int PROFILING_TYPE_HEAP_PROFILE

Profiling type for requestProfiling(int, Bundle, String, CancellationSignal, Executor, Consumer) to request a heap profile.

int PROFILING_TYPE_JAVA_HEAP_DUMP

Profiling type for requestProfiling(int, Bundle, String, CancellationSignal, Executor, Consumer) to request a java heap dump.

int PROFILING_TYPE_STACK_SAMPLING

Profiling type for requestProfiling(int, Bundle, String, CancellationSignal, Executor, Consumer) to request a stack sample.

int PROFILING_TYPE_SYSTEM_TRACE

Profiling type for requestProfiling(int, Bundle, String, CancellationSignal, Executor, Consumer) to request a system trace.

Public methods

void registerForAllProfilingResults(Executor executor, Consumer<ProfilingResult> listener)

Register a listener to be called for all profiling results for this uid.

void requestProfiling(int profilingType, Bundle parameters, String tag, CancellationSignal cancellationSignal, Executor executor, Consumer<ProfilingResult> listener)

Request system profiling.

void unregisterForAllProfilingResults(Consumer<ProfilingResult> listener)

Unregister a listener that was to be called for all profiling results.

Inherited methods

Constants

PROFILING_TYPE_HEAP_PROFILE

public static final int PROFILING_TYPE_HEAP_PROFILE

Profiling type for requestProfiling(int, Bundle, String, CancellationSignal, Executor, Consumer) to request a heap profile.

Constant Value: 2 (0x00000002)

PROFILING_TYPE_JAVA_HEAP_DUMP

public static final int PROFILING_TYPE_JAVA_HEAP_DUMP

Profiling type for requestProfiling(int, Bundle, String, CancellationSignal, Executor, Consumer) to request a java heap dump.

Constant Value: 1 (0x00000001)

PROFILING_TYPE_STACK_SAMPLING

public static final int PROFILING_TYPE_STACK_SAMPLING

Profiling type for requestProfiling(int, Bundle, String, CancellationSignal, Executor, Consumer) to request a stack sample.

Constant Value: 3 (0x00000003)

PROFILING_TYPE_SYSTEM_TRACE

public static final int PROFILING_TYPE_SYSTEM_TRACE

Profiling type for requestProfiling(int, Bundle, String, CancellationSignal, Executor, Consumer) to request a system trace.

Constant Value: 4 (0x00000004)

Public methods

registerForAllProfilingResults

public void registerForAllProfilingResults (Executor executor, 
                Consumer<ProfilingResult> listener)

Register a listener to be called for all profiling results for this uid. Listeners set here will be called in addition to any provided with the request.

Parameters
executor Executor: The executor to call back with. This value cannot be null.

listener Consumer: Listener to be triggered with result. This value cannot be null.

requestProfiling

public void requestProfiling (int profilingType, 
                Bundle parameters, 
                String tag, 
                CancellationSignal cancellationSignal, 
                Executor executor, 
                Consumer<ProfilingResult> listener)

Request system profiling.

Note: use of this API directly is not recommended for most use cases. Please use the higher level wrappers provided by androidx that will construct the request correctly based on available options and simplified user provided request parameters.

Note: requests are not guaranteed to be filled.

Note: Both a listener and executor must be set for the request to be considered for fulfillment. Listeners can be set in this method, with registerForAllProfilingResults(Executor, Consumer), or both. If no listener and executor is set the request will be discarded.

Parameters
profilingType int: Type of profiling to collect. Value is PROFILING_TYPE_JAVA_HEAP_DUMP, PROFILING_TYPE_HEAP_PROFILE, PROFILING_TYPE_STACK_SAMPLING, or PROFILING_TYPE_SYSTEM_TRACE

parameters Bundle: Bundle of request related parameters. If the bundle contains any unrecognized parameters, the request will be fail with ERROR(/#ProfilingResult#ERROR_FAILED_INVALID_REQUEST). If the values for the parameters are out of supported range, the closest possible in range value will be chosen. Use of androidx wrappers is recommended over generating this directly. This value may be null.

tag String: Caller defined data to help identify the output. The first 20 alphanumeric characters, plus dashes, will be lowercased and included in the output filename. This value may be null.

cancellationSignal CancellationSignal: for caller requested cancellation. Results will be returned if available. If this is null, the requesting app will not be able to stop the collection. The collection will stop after timing out with either the provided configurations or with system defaults

executor Executor: The executor to call back with. Will only be used for the listener provided in this method. If this is null, and no global executor and listener combinations are registered at the time of the request, the request will be dropped.

listener Consumer: Listener to be triggered with result. Any global listeners registered via registerForAllProfilingResults(Executor, Consumer) will also be triggered. If this is null, and no global listener and executor combinations are registered at the time of the request, the request will be dropped.

unregisterForAllProfilingResults

public void unregisterForAllProfilingResults (Consumer<ProfilingResult> listener)

Unregister a listener that was to be called for all profiling results. If no listener is provided, all listeners for this process that were not submitted with a profiling request will be removed.

Parameters
listener Consumer: Listener to unregister and no longer be triggered with the results. Null to remove all global listeners for this uid. This value may be null.