Android 12 Developer Preview is here! Try it out, and give us your feedback!

HiltWorker

@Target([AnnotationTarget.CLASS, AnnotationTarget.FILE]) class HiltWorker
androidx.hilt.work.HiltWorker

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 androidx.work.Configuration.Builder#setWorkerFactory(androidx.work.WorkerFactory). 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.

Summary

Public constructors

Identifies a androidx.work.ListenableWorker's constructor for injection.

Public constructors

<init>

HiltWorker()

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 androidx.work.Configuration.Builder#setWorkerFactory(androidx.work.WorkerFactory). 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.