# Print output for @column tags ?> PerformanceHintManager.Session - Android SDK | Android Developers

Most visited

Recently visited

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 updateTargetWorkDuration(long targetDurationNanos)

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

Inherited methods

Public methods

close

public void close ()

Ends the current hint session.

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

reportActualWorkDuration

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

updateTargetWorkDuration

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