Make the worker a `@HiltWorker` and mark its constructor `@AssistedInject`. WorkManager supplies `Context` and `WorkerParameters`; Hilt supplies the repository. ```kotlin @HiltWorker class SyncWorker @AssistedInject constructor( @Assisted appContext: Context, @Assisted workerParams: WorkerParameters, private val repository: SyncRepository, ) : CoroutineWorker(appContext, workerParams) { override suspend fun doWork(): Result = try { repository.sync() Result.success() } catch (error: IOExceptio...
Scanned 9/5/2026
Install to Claude Code
npx -y skills add HoangNguyen0403/agent-skills-standard --skill android-background-work --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Android Background Work?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/hoangnguyen0403-android-background-work-9a8abe1b)More formats (shields.io, HTML) on the badges page.
# Injecting a repository into a WorkManager worker with Hilt
Make the worker a `@HiltWorker` and mark its constructor `@AssistedInject`. WorkManager supplies `Context` and `WorkerParameters`; Hilt supplies the repository.
```kotlin
@HiltWorker
class SyncWorker @AssistedInject constructor(
@Assisted appContext: Context,
@Assisted workerParams: WorkerParameters,
private val repository: SyncRepository,
) : CoroutineWorker(appContext, workerParams) {
override suspend fun doWork(): Result = try {
repository.sync()
Result.success()
} catch (error: IOException) {
Result.retry()
} catch (error: Exception) {
Result.failure()
}
}
```
Configure WorkManager to use Hilt's factory:
```kotlin
@HiltAndroidApp
class App : Application(), Configuration.Provider {
@Inject
lateinit var workerFactory: HiltWorkerFactory
override val workManagerConfiguration: Configuration
get() = Configuration.Builder()
.setWorkerFactory(workerFactory)
.build()
}
```
Because the application supplies the configuration, remove WorkManager's default initializer from the manifest:
```xml
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
tools:node="merge">
<meta-data
android:name="androidx.work.WorkManagerInitializer"
android:value="androidx.startup"
tools:node="remove" />
</provider>
```
Ensure `SyncRepository` is provided or injectable in Hilt. Do not use a plain `@Inject` constructor for the worker: the two WorkManager-owned parameters must be annotated with `@Assisted` so `HiltWorkerFactory` can create it.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!