Stay organized with collections Save and categorize content based on your preferences.
Added in API level 31

PerformanceHintManager.Session

public static class PerformanceHintManager.Session
extends Object implements Closeable

java.lang.Object
   ↳ android.os.PerformanceHintManager.Session


A Session represents a group of threads with an inter-related workload such that hints for their performance should be considered as a unit. The threads in a given session should be long-life and not created or destroyed dynamically.

Each session is expected to have a periodic workload with a target duration for each cycle. The cycle duration is likely greater than the target work duration to allow other parts of the pipeline to run within the available budget. For example, a renderer thread may work at 60hz in order to produce frames at the display's frame but have a target work duration of only 6ms.

Any call in this class will change its internal data, so you must do your own thread safety to protect from racing.

Note that the target work duration can be updated if workloads change.

After each cycle of work, the client is expected to report the actual time taken to complete.

All timings should be in SystemClock#elapsedRealtimeNanos().

Summary

Public methods

void close()

Ends the current hint session.

void reportActualWorkDuration(long actualDurationNanos)

Reports the actual duration for the last cycle of work.

void setThreads(int[] tids)

Set a list of threads to the performance hint session.

void updateTargetWorkDuration(long targetDurationNanos)

Updates this session's target duration for each cycle of work.

Inherited methods

Public methods

close

Added in API level 31
public void close ()

Ends the current hint session.

Once called, you should not call anything else on this object.

reportActualWorkDuration

Added in API level 31
public void reportActualWorkDuration (long actualDurationNanos)

Reports the actual duration for the last cycle of work.

The system will attempt to adjust the core placement of the threads within the thread group and/or the frequency of the core on which they are run to bring the actual duration close to the target duration.

Parameters
actualDurationNanos long: how long the thread group took to complete its last task in nanoseconds

setThreads

public void setThreads (int[] tids)

Set a list of threads to the performance hint session. This operation will replace the current list of threads with the given list of threads. Note that this is not an oneway method.

Parameters
tids int: The list of threads to be associated with this session. They must be part of this app's thread group. This value cannot be null.

Throws
IllegalStateException if the hint session is not in the foreground.
IllegalArgumentException if the thread id list is empty.
SecurityException if any thread id doesn't belong to the application.

updateTargetWorkDuration

Added in API level 31
public void updateTargetWorkDuration (long targetDurationNanos)

Updates this session's target duration for each cycle of work.

Parameters
targetDurationNanos long: the new desired duration in nanoseconds