@Implements(value=android.os.Looper.class, isInAndroidSdk=false) public final class ShadowPausedLooper extends ShadowLooper
LooperMode.Mode.PAUSED
.
This shadow differs from the legacy ShadowLegacyLooper
in the following ways:\ - Has
no connection to Scheduler
. Its APIs are standalone - The main
looper is always paused. Posted messages are not executed unless idle()
is called. -
Just like in real Android, each looper has its own thread, and posted tasks get executed in that
thread. - - There is only a single SystemClock
value that all loopers read from. Unlike
legacy behavior where each Scheduler
kept their own clock value.
This class should not be used directly; use ShadowLooper
instead.
ShadowLooper.Picker
Constructor | Description |
---|---|
ShadowPausedLooper() |
Modifier and Type | Method | Description |
---|---|---|
protected void |
__constructor__(boolean quitAllowed) |
|
Duration |
getLastScheduledTaskTime() |
|
protected static Collection<Looper> |
getLoopers() |
|
Duration |
getNextScheduledTaskTime() |
|
Scheduler |
getScheduler() |
Returns the
Scheduler that is being used to manage the enqueued
tasks. |
boolean |
hasQuit() |
|
void |
idle() |
Executes all posted tasks scheduled before or at the current time.
|
void |
idleConstantly(boolean shouldIdleConstantly) |
|
void |
idleFor(long time,
TimeUnit timeUnit) |
Advances the system clock by the given time, then executes all posted tasks scheduled before or
at the given time.
|
void |
idleIfPaused() |
Helper method to selectively call idle() only if LooperMode is PAUSED.
|
boolean |
isIdle() |
Returns true if there are no pending tasks scheduled to be executed before current time.
|
boolean |
isPaused() |
|
void |
pause() |
Pause the looper.
|
boolean |
post(Runnable runnable,
long delayMillis) |
Enqueue a task to be run later.
|
boolean |
postAtFrontOfQueue(Runnable runnable) |
Enqueue a task to be run ahead of all other delayed tasks.
|
protected static void |
prepareMainLooper() |
|
protected void |
quit() |
|
protected void |
quitSafely() |
|
void |
quitUnchecked() |
|
void |
reset() |
Causes all enqueued tasks to be discarded, and pause state to be reset
|
static void |
resetLoopers() |
|
void |
resetScheduler() |
Only supported for
LooperMode.Mode.LEGACY . |
void |
runOneTask() |
Causes only one of the next
Runnable s that have been scheduled to run while advancing
the clock to its start time. |
void |
runPaused(Runnable runnable) |
Runs the current task with the looper paused.
|
void |
runToEndOfTasks() |
|
void |
runToNextTask() |
Causes the next
Runnable (s) that have been scheduled to run while advancing the clock
to its start time. |
boolean |
setPaused(boolean shouldPause) |
Control the paused state of the Looper.
|
void |
unPause() |
Not supported for the main Looper in
LooperMode.Mode.PAUSED . |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
assertLooperMode, clearLooperMode, getAllLoopers, getLooperForThread, getShadowMainLooper, idle, idle, idleFor, idleMainLooper, idleMainLooper, idleMainLooper, idleMainLooperConstantly, looperMode, pauseLooper, pauseMainLooper, resetThreadLoopers, runMainLooperOneTask, runMainLooperToNextTask, runUiThreadTasks, runUiThreadTasksIncludingDelayedTasks, shadowMainLooper, unPauseLooper, unPauseMainLooper
@Implementation protected void __constructor__(boolean quitAllowed)
protected static Collection<Looper> getLoopers()
public void quitUnchecked()
quitUnchecked
in class ShadowLooper
public boolean hasQuit()
hasQuit
in class ShadowLooper
public void idle()
ShadowLooper
idle
in class ShadowLooper
public void idleFor(long time, TimeUnit timeUnit)
ShadowLooper
idleFor
in class ShadowLooper
public boolean isIdle()
ShadowLooper
isIdle
in class ShadowLooper
public void unPause()
ShadowLooper
LooperMode.Mode.PAUSED
.unPause
in class ShadowLooper
public void pause()
ShadowLooper
Has no practical effect for realistic looper, since it is always paused.
pause
in class ShadowLooper
public boolean isPaused()
isPaused
in class ShadowLooper
public boolean setPaused(boolean shouldPause)
ShadowLooper
Not supported for the main Looper in LooperMode.Mode.PAUSED
.
setPaused
in class ShadowLooper
public void resetScheduler()
ShadowLooper
LooperMode.Mode.LEGACY
.resetScheduler
in class ShadowLooper
public void reset()
ShadowLooper
reset
in class ShadowLooper
public void idleIfPaused()
ShadowLooper
Intended for backwards compatibility, to avoid changing behavior for tests still using LEGACY LooperMode.
idleIfPaused
in class ShadowLooper
public void idleConstantly(boolean shouldIdleConstantly)
idleConstantly
in class ShadowLooper
public void runToEndOfTasks()
ShadowLooper
Runnable
s that have been scheduled to run while advancing the clock
to the start time of the last scheduled Runnable
.runToEndOfTasks
in class ShadowLooper
public void runToNextTask()
ShadowLooper
Runnable
(s) that have been scheduled to run while advancing the clock
to its start time. If more than one Runnable
is scheduled to run at this time then they
will all be run.runToNextTask
in class ShadowLooper
public void runOneTask()
ShadowLooper
Runnable
s that have been scheduled to run while advancing
the clock to its start time. Only one Runnable
will run even if more than one has been
scheduled to run at the same time.runOneTask
in class ShadowLooper
public boolean post(Runnable runnable, long delayMillis)
ShadowLooper
post
in class ShadowLooper
runnable
- the task to be rundelayMillis
- how many milliseconds into the (virtual) future to run itHandler.postDelayed(Runnable,long)
public boolean postAtFrontOfQueue(Runnable runnable)
ShadowLooper
postAtFrontOfQueue
in class ShadowLooper
runnable
- the task to be runHandler.postAtFrontOfQueue(Runnable)
public void runPaused(Runnable runnable)
ShadowLooper
When LooperMode is PAUSED, this will execute all pending tasks scheduled before the current time.
runPaused
in class ShadowLooper
public Duration getNextScheduledTaskTime()
getNextScheduledTaskTime
in class ShadowLooper
public Duration getLastScheduledTaskTime()
getLastScheduledTaskTime
in class ShadowLooper
@Resetter public static void resetLoopers()
@Implementation protected static void prepareMainLooper()
@Implementation protected void quit()
@Implementation(minSdk=18) protected void quitSafely()
public Scheduler getScheduler()
ShadowLooper
Scheduler
that is being used to manage the enqueued
tasks. This scheduler is managed by the Looper's associated queue.
Only supported for LooperMode.Mode.LEGACY
.
getScheduler
in class ShadowLooper
Scheduler
that is being used to manage the enqueued
tasks.