Package org.robolectric.shadows
Class ShadowLegacyChoreographer
java.lang.Object
org.robolectric.shadows.ShadowChoreographer
org.robolectric.shadows.ShadowLegacyChoreographer
@Implements(value=android.view.Choreographer.class,
shadowPicker=Picker.class,
isInAndroidSdk=false)
public class ShadowLegacyChoreographer
extends ShadowChoreographer
The
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.
-
Nested Class Summary
Nested classes/interfaces inherited from class org.robolectric.shadows.ShadowChoreographer
ShadowChoreographer.CallbackQueueReflector, ShadowChoreographer.ChoreographerReflector, ShadowChoreographer.Picker
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic long
Return the current inter-frame interval.protected long
protected static Choreographer
protected void
postCallback
(int callbackType, Runnable action, Object token) The default implementation will callpostCallbackDelayed(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 callpostFrameCallbackDelayed(FrameCallback, long)
with no delay.protected void
postFrameCallbackDelayed
(Choreographer.FrameCallback callback, long delayMillis) protected void
removeCallbacks
(int callbackType, Runnable action, Object token) protected void
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 whenpostCallback(int, Runnable, Object)
is invoked.static void
setPostFrameCallbackDelay
(int delayMillis) Allows application to specify a fixed amount of delay whenpostFrameCallback(FrameCallback)
is invoked.Methods inherited from class org.robolectric.shadows.ShadowChoreographer
doFrame, doFrame, getFrameDelay, getNextVsyncTime, isPaused, setFrameDelay, setPaused
-
Constructor Details
-
ShadowLegacyChoreographer
public ShadowLegacyChoreographer()
-
-
Method Details
-
setPostCallbackDelay
public static void setPostCallbackDelay(int delayMillis) Allows application to specify a fixed amount of delay whenpostCallback(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 RobolectricScheduler
is inScheduler.IdleState.PAUSED
mode. -
setPostFrameCallbackDelay
public static void setPostFrameCallbackDelay(int delayMillis) Allows application to specify a fixed amount of delay whenpostFrameCallback(FrameCallback)
is invoked. The default delay value is 0. This can be used to avoid infinite animation tasks to be spawned when the RobolectricScheduler
is inScheduler.IdleState.PAUSED
mode. -
getInstance
-
postCallback
The default implementation will callpostCallbackDelayed(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.- See Also:
-
postCallbackDelayed
@Implementation protected void postCallbackDelayed(int callbackType, Runnable action, Object token, long delayMillis) -
removeCallbacks
-
postFrameCallback
The default implementation will callpostFrameCallbackDelayed(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.- See Also:
-
postFrameCallbackDelayed
@Implementation protected void postFrameCallbackDelayed(Choreographer.FrameCallback callback, long delayMillis) -
removeFrameCallback
-
getFrameTimeNanos
-
getFrameInterval
public static long getFrameInterval()Return the current inter-frame interval.- Returns:
- Inter-frame interval.
-
setFrameInterval
public static void setFrameInterval(long frameInterval) Set the inter-frame interval used to advance the clock. By default, this is set to 1ms.- Parameters:
frameInterval
- Inter-frame interval.
-
reset
-