@Implements(value=android.view.Choreographer.class, shadowPicker=Picker.class, isInAndroidSdk=false) public class ShadowLegacyChoreographer extends ShadowChoreographer
Choreographer
shadow for LooperMode.Mode.PAUSED
.
In LooperMode.Mode.PAUSED
mode, Robolectric maintains its own concept of the current
time from the Choreographer's point of view, aimed at making animations work correctly. Time
starts out at 0 and advances by frameInterval
every time Choreographer.getFrameTimeNanos()
is called.
ShadowChoreographer.Picker
Constructor | Description |
---|---|
ShadowLegacyChoreographer() |
Modifier and Type | Method | Description |
---|---|---|
static long |
getFrameInterval() |
Return the current inter-frame interval.
|
protected long |
getFrameTimeNanos() |
|
protected static Choreographer |
getInstance() |
|
protected void |
postCallback(int callbackType,
Runnable action,
Object token) |
The default implementation will call
postCallbackDelayed(int, Runnable, Object, long)
with no delay. |
protected void |
postCallbackDelayed(int callbackType,
Runnable action,
Object token,
long delayMillis) |
|
protected void |
postFrameCallback(Choreographer.FrameCallback callback) |
The default implementation will call
postFrameCallbackDelayed(FrameCallback, long)
with no delay. |
protected void |
postFrameCallbackDelayed(Choreographer.FrameCallback callback,
long delayMillis) |
|
protected void |
removeCallbacks(int callbackType,
Runnable action,
Object token) |
|
protected void |
removeFrameCallback(Choreographer.FrameCallback callback) |
|
static void |
reset() |
|
static void |
setFrameInterval(long frameInterval) |
Set the inter-frame interval used to advance the clock.
|
static void |
setPostCallbackDelay(int delayMillis) |
Allows application to specify a fixed amount of delay when
postCallback(int, Runnable,
Object) is invoked. |
static void |
setPostFrameCallbackDelay(int delayMillis) |
Allows application to specify a fixed amount of delay when
postFrameCallback(FrameCallback) is invoked. |
public static void setPostCallbackDelay(int delayMillis)
postCallback(int, Runnable,
Object)
is invoked. The default delay value is 0. This can be used to avoid infinite animation
tasks to be spawned when the Robolectric Scheduler
is in Scheduler.IdleState.PAUSED
mode.public static void setPostFrameCallbackDelay(int delayMillis)
postFrameCallback(FrameCallback)
is invoked. The default delay value is 0. This can be used
to avoid infinite animation tasks to be spawned when the Robolectric Scheduler
is in Scheduler.IdleState.PAUSED
mode.@Implementation protected static Choreographer getInstance()
@Implementation protected void postCallback(int callbackType, Runnable action, Object token)
postCallbackDelayed(int, Runnable, Object, long)
with no delay. AnimationHandler
calls this method to schedule
animation updates infinitely. Because during a Robolectric test the system time is paused and
execution of the event loop is invoked for each test instruction, the behavior of
AnimationHandler would result in endless looping (the execution of the task results in a new
animation task created and scheduled to the front of the event loop queue).
To prevent endless looping, a test may call setPostCallbackDelay(int)
to specify a
small delay when animation is scheduled.
setPostCallbackDelay(int)
@Implementation protected void postCallbackDelayed(int callbackType, Runnable action, Object token, long delayMillis)
@Implementation protected void removeCallbacks(int callbackType, Runnable action, Object token)
@Implementation protected void postFrameCallback(Choreographer.FrameCallback callback)
postFrameCallbackDelayed(FrameCallback, long)
with no delay. AnimationHandler
calls this method to schedule
animation updates infinitely. Because during a Robolectric test the system time is paused and
execution of the event loop is invoked for each test instruction, the behavior of
AnimationHandler would result in endless looping (the execution of the task results in a new
animation task created and scheduled to the front of the event loop queue).
To prevent endless looping, a test may call setPostFrameCallbackDelay(int)
to
specify a small delay when animation is scheduled.
setPostCallbackDelay(int)
@Implementation protected void postFrameCallbackDelayed(Choreographer.FrameCallback callback, long delayMillis)
@Implementation protected void removeFrameCallback(Choreographer.FrameCallback callback)
@Implementation protected long getFrameTimeNanos()
public static long getFrameInterval()
public static void setFrameInterval(long frameInterval)
frameInterval
- Inter-frame interval.@Resetter public static void reset()