Class PausedExecutorService
java.lang.Object
java.util.concurrent.AbstractExecutorService
org.robolectric.android.util.concurrent.PausedExecutorService
- All Implemented Interfaces:
Executor
,ExecutorService
Executor service that queues any posted tasks.
Users must explicitly call
runAll()
to execute all pending tasks.
Intended to be a replacement for RoboExecutorService
when using
LooperMode.Mode.PAUSED
.
Unlike RoboExecutorService
, will execute tasks on a background thread. This is useful
to test Android code that enforces it runs off the main thread.
NOTE: Beta API, subject to change.-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionboolean
awaitTermination
(long l, TimeUnit timeUnit) void
boolean
boolean
boolean
protected <T> RunnableFuture<T>
newTaskFor
(Runnable runnable, T value) protected <T> RunnableFuture<T>
newTaskFor
(Callable<T> callable) int
runAll()
Execute all posted tasks and block until they are complete.boolean
runNext()
Executes the next queued task.void
shutdown()
-
Constructor Details
-
PausedExecutorService
public PausedExecutorService()
-
-
Method Details
-
runAll
public int runAll()Execute all posted tasks and block until they are complete.- Returns:
- the number of tasks executed
-
runNext
public boolean runNext()Executes the next queued task. Will be ignored if called from the executor service thread to prevent deadlocks.- Returns:
- true if task was run, false if queue was empty
-
hasQueuedTasks
public boolean hasQueuedTasks()- Returns:
- true if there are queued pending tasks
-
shutdown
public void shutdown() -
shutdownNow
-
isShutdown
public boolean isShutdown() -
isTerminated
public boolean isTerminated() -
awaitTermination
- Throws:
InterruptedException
-
execute
-
newTaskFor
- Overrides:
newTaskFor
in classAbstractExecutorService
-
newTaskFor
- Overrides:
newTaskFor
in classAbstractExecutorService
-