Performing Simple Work
Having a Worker
is part of the puzzle. We still need to tell WorkManager
to actually use that class to do our work.
If we want to perform the work once — perhaps in response to user input — we can create a OneTimeWorkRequest
object to describe that work, then enqueue()
it with WorkManager
:
OneTimeWorkRequest downloadWork=
new OneTimeWorkRequest.Builder(DownloadWorker.class)
.build();
WorkManager.getInstance().enqueue(downloadWork);
We create a OneTimeWorkRequest
via its associated Builder
, which takes the Java Class
object for our Worker
subclass its constructor. We build()
the Builder
and pass the OneTimeWorkRequest
to enqueue()
on the WorkManager
singleton, which we get by calling getInstance()
on WorkManager
.
After this code executes, at some point in time, an instance of DownloadWorker
will be created and doWork()
will be called. Exactly when that will be is indeterminate. In this particular case, probably it will be called fairly quickly, with doWork()
being executed on a thread in a WorkManager
-managed thread pool. However, it is entirely possible that the user leaves our app and our process is terminated before this work can begin. If so, JobScheduler
, Firebase JobDispatcher, or AlarmManager
will arrange to get that work done later.
Prev Table of Contents Next
This book is licensed under the Creative Commons Attribution-ShareAlike 4.0 International license.