HiltWorker
@Target(value = ElementType.TYPE)
@Retention(value = RetentionPolicy.CLASS)
@GeneratesRootInput
annotation HiltWorker
A type annotation that identifies a androidx.work.ListenableWorker
's constructor for injection.
The Worker
will be available for creation by the androidx.hilt.work.HiltWorkerFactory
that should be set in WorkManager
's configuration via setWorkerFactory
. The HiltWorker
containing a constructor annotated with AssistedInject will have its dependencies defined in the constructor parameters injected by Dagger's Hilt.
Example:
@HiltWorker public class UploadWorker extends Worker { @AssistedInject public UploadWorker(@Assisted Context context, @Assisted WorkerParameters params, HttpClient httpClient) { // ... } }
@HiltAndroidApp public class MyApplication extends Application implements Configuration.Provider { @Inject HiltWorkerFactory workerFactory; @Override public Configuration getWorkManagerConfiguration() { return Configuration.Builder() .setWorkerFactory(workerFactory) .build(); } }
Only one constructor in the Worker
must be annotated with AssistedInject. The constructor must define parameters for a Assisted-annotated Context
and a Assisted-annotated WorkerParameters
along with any other dependencies. Both the Context
and WorkerParameters
must not be a type param of javax.inject.Provider
nor Lazy and must not be qualified.
Only dependencies available in the SingletonComponent can be injected into the Worker
.