Starting a background task using WorkManager
The first question we will address here is should we opt for WorkManager
or a foreground service? To answer that, a good rule of thumb is to ask whether you need the action to be tracked by the user in real time.
If the answer is yes (for example, if you have a task such as responding to the user’s location or playing music in the background), then you should use a foreground service with its attached notification to give the user a real-time indication of state. When the background task can be delayed or does not require user interaction (for example, downloading a large file), use WorkManager
.
Note
Starting with version 2.3.0-alpha02
of WorkManager
, you can launch a foreground service via the WorkManager
singleton by calling setForegroundAsync(ForegroundInfo)
. Our control over that foreground service is quite limited. It does allow you to attach a (predefined) notification to the work, which is why it is worth mentioning...