A coroutine in viewModelScope (ViewModel) lives as long as its screen, and one in an app-wide scope as long as the process, which Android kills freely in the background. WorkManager 234 writes each request to its own SQLite 4,756 database, hands it to the system's JobScheduler, and runs it later in whatever process exists then, even after a reboot. The price is timing: the system decides when, batching jobs across apps.
| The work | Use | Why |
|---|---|---|
| Load data for the visible screen | Coroutine in viewModelScope | Cancel it when the user leaves |
| Refresh the catalog every few hours | Periodic WorkManager request | Must survive process death and reboots |
| Play audio or track a run | Foreground service (Foreground Services) | The user is watching it happen |
| Remind at exactly 9:00 | AlarmManager | WorkManager never promises an exact time |
React Native 36,878 and Capacitor 243,123 apps reach the same scheduler through plugins such as expo-background-task, which wraps WorkManager on Android.