WorkManager
Understanding WorkManager for background tasks in Android
Introduction to WorkManager
WorkManager Android में background tasks को handle करने का एक modern और efficient way provide करता है। यह deferrable और guaranteed execution वाले tasks को manage करता है।
WorkManager provides a modern and efficient way to handle background tasks in Android. It manages tasks that are deferrable and require guaranteed execution.
Key Features (मुख्य विशेषताएं):
- WorkManager background tasks को schedule करता है
- WorkManager schedules background tasks
- WorkManager tasks को retry करता है
- WorkManager retries tasks
- WorkManager tasks को chain कर सकता है
- WorkManager can chain tasks
- WorkManager tasks को observe कर सकता है
- WorkManager can observe tasks
WorkManager Components (वर्कमैनेजर कंपोनेंट्स)
WorkManager के main components:
Main components of WorkManager:
Component (कंपोनेंट) | Description (विवरण) |
---|---|
Worker | Background task को define करता है |
Worker | Defines the background task |
WorkRequest | Task execution को configure करता है |
WorkRequest | Configures task execution |
WorkManager | Tasks को schedule और manage करता है |
WorkManager | Schedules and manages tasks |
Implementation Example (इम्प्लीमेंटेशन उदाहरण)
WorkManager को implement करने का example:
Example of implementing WorkManager:
// Add WorkManager dependency
dependencies {
implementation 'androidx.work:work-runtime-ktx:2.9.0'
}
// Define Worker class
class UploadWorker(
context: Context,
params: WorkerParameters
) : CoroutineWorker(context, params) {
override suspend fun doWork(): Result {
return try {
// Perform background work
uploadData()
Result.success()
} catch (e: Exception) {
Result.failure()
}
}
private suspend fun uploadData() {
// Upload data implementation
}
}
// Schedule work
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Create work request
val uploadWorkRequest = OneTimeWorkRequestBuilder()
.setConstraints(
Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build()
)
.build()
// Enqueue work
WorkManager.getInstance(this)
.enqueue(uploadWorkRequest)
// Observe work status
WorkManager.getInstance(this)
.getWorkInfoByIdLiveData(uploadWorkRequest.id)
.observe(this) { workInfo ->
when (workInfo.state) {
WorkInfo.State.SUCCEEDED -> {
// Work completed successfully
}
WorkInfo.State.FAILED -> {
// Work failed
}
else -> {
// Other states
}
}
}
}
}
Best Practices (सर्वोत्तम प्रथाएं)
WorkManager के साथ काम करने के best practices:
Best practices for working with WorkManager: