Introduction to Work Manager (Android)
Managing Background Processing in Android
Contents
What is WorkManager?
Why and When to use WorkManager?
Persistent Work and Types
Features
Relation to Coroutines, Alarm Manager and other APIs
What is WorkManager?
WorkManager is an Android Jetpack library that simplifies and manages background tasks, ensuring efficient execution while adhering to system constraints. With its intuitive API, developers can schedule various types of tasks, such as one-time, periodic, and unique requests, seamlessly integrating background processing into their apps.
Whether it's uploading images, sending notifications, or performing data synchronization, WorkManager provides a robust solution for handling background work, enhancing app performance, and delivering a smoother user experience.
Say goodbye to manual management of background tasks and embrace the power and flexibility of WorkManager in your Android development workflow.
Why and When to use WorkManager?
Work Manager is an ideal solution for managing persistent tasks, which remain scheduled even in the event of app or system restarts. These tasks often involve background processing, making Work Manager a preferred choice for ensuring their seamless execution across various conditions.
WorkManager isn't designed for handling in-process background tasks that can be safely terminated if the app process ends. It also isn't a universal solution for all tasks requiring immediate execution.
Persistent Work
WorkManager handles three types of persistent work:
Immediate: Tasks that must begin immediately and complete soon. May be expedited.
Long Running: Tasks which might run for longer, potentially longer than 10 minutes.
Deferrable: Scheduled tasks that start at a later time and can run periodically.
Type | Periodicity | Examples |
Immediate | One Time | File Uploading, Encrypting Data |
Long Running | One Time or Periodic | Image Processing, Data Synchronization |
Deferrable | One Time or Periodic | Data Backup, Data Cleanup, Scheduled Notifications |
Features
Work Constraints: Define the ideal circumstances for your work to execute by specifying work constraints declaratively. This may include conditions such as running only when the device is connected to an unmetered network, during idle periods, or when sufficient battery is available. Read more.
Scheduling: WorkManager empowers you to schedule tasks for one-time or repeated execution within flexible scheduling windows. With the ability to tag and name tasks, you can easily manage unique or replaceable work and monitor or cancel groups of tasks efficiently. It handles task persistence across device reboots through its internal SQLite database and seamlessly aligns with power-saving functionalities like Doze mode, ensuring worry-free background task management.
Retry Policy: WorkManager provides adaptable retry policies, allowing you to define actions to take in case of failure or cancellation. You can find out more about policies there.
Chaining Work: WorkManager enables you to link various tasks together, running them sequentially or simultaneously. This approach proves efficient for tasks reliant on the outputs of preceding ones, facilitating streamlined task execution.
Threading Interoperability: WorkManager seamlessly integrates with Coroutines and RxJava for built-in threading compatibility. Additionally, it offers the flexibility to incorporate custom asynchronous APIs as needed.
Relation with Other APIs
Although coroutines are suitable for specific use cases, they aren't intended for managing persistent tasks. It's essential to distinguish between coroutines, a concurrency framework, and WorkManager, a library specifically designed for persistent work.
Similarly, AlarmManager should only be utilized for tasks related to clocks or calendars, rather than for general background work.
The WorkManager API is the recommended replacement for all previous Android background scheduling APIs, including FirebaseJobDispatcher
, GcmNetworkManager
, and JobScheduler
.