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; do 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 the WorkManager, you can launch a foreground service via the WorkManager by calling setForegroundAsync(ForegroundInfo). Our control over that foreground service is quite limited. It does allow you to attach a (pre-defined) notification to the work, which is why it is worth mentioning.
In our...