to top
Android APIs
public final class

Choreographer

extends Object
java.lang.Object
   ↳ android.view.Choreographer

Class Overview

Coordinates the timing of animations, input and drawing.

The choreographer receives timing pulses (such as vertical synchronization) from the display subsystem then schedules work to occur as part of rendering the next display frame.

Applications typically interact with the choreographer indirectly using higher level abstractions in the animation framework or the view hierarchy. Here are some examples of things you can do using the higher-level APIs.

However, there are a few cases where you might want to use the functions of the choreographer directly in your application. Here are some examples.

  • If your application does its rendering in a different thread, possibly using GL, or does not use the animation framework or view hierarchy at all and you want to ensure that it is appropriately synchronized with the display, then use postFrameCallback(Choreographer.FrameCallback).
  • ... and that's about it.

Each Looper thread has its own choreographer. Other threads can post callbacks to run on the choreographer but they will run on the Looper to which the choreographer belongs.

Summary

Nested Classes
interface Choreographer.FrameCallback Implement this interface to receive a callback when a new display frame is being rendered. 
Public Methods
static Choreographer getInstance()
Gets the choreographer for the calling thread.
void postFrameCallback(Choreographer.FrameCallback callback)
Posts a frame callback to run on the next frame.
void postFrameCallbackDelayed(Choreographer.FrameCallback callback, long delayMillis)
Posts a frame callback to run on the next frame after the specified delay.
void removeFrameCallback(Choreographer.FrameCallback callback)
Removes a previously posted frame callback.
[Expand]
Inherited Methods
From class java.lang.Object

Public Methods

public static Choreographer getInstance ()

Since: API Level 16

Gets the choreographer for the calling thread. Must be called from a thread that already has a Looper associated with it.

Returns
  • The choreographer for this thread.
Throws
IllegalStateException if the thread does not have a looper.

public void postFrameCallback (Choreographer.FrameCallback callback)

Since: API Level 16

Posts a frame callback to run on the next frame.

The callback runs once then is automatically removed.

Parameters
callback The frame callback to run during the next frame.

public void postFrameCallbackDelayed (Choreographer.FrameCallback callback, long delayMillis)

Since: API Level 16

Posts a frame callback to run on the next frame after the specified delay.

The callback runs once then is automatically removed.

Parameters
callback The frame callback to run during the next frame.
delayMillis The delay time in milliseconds.

public void removeFrameCallback (Choreographer.FrameCallback callback)

Since: API Level 16

Removes a previously posted frame callback.

Parameters
callback The frame callback to remove.