Why WorkManager?
It guarantees execution even if the app closes or device restarts. It chooses the best underlying API (JobScheduler, AlarmManager) automatically.
OneTime vs Periodic
OneTimeWorkRequest for "Upload logs now". PeriodicWorkRequest for "Sync data every 15 mins". Note: Periodic minimum interval is 15 minutes.
Constraints
Run only when: on Wi-Fi, Charging, Device Idle, or Battery not low. WorkManager handles waiting for conditions.
Chaining Work
Complex workflows. Search -> Download -> Compress -> Upload. Chain them sequentially or in parallel. If one fails, the chain stops.
Handling Retries
Built-in backoff policies (Linear/Exponential). If a network call fails, WorkManager reschedules it automatically for later.
Observing Status
Use LiveData to observe the state (RUNNING, SUCCEEDED, FAILED) of work in your UI. Show progress bars based on real status.
Passing Data
Use inputData and outputData to pass lightweight arguments between chained workers.