public final class

HiltWorkerFactory

extends WorkerFactory

 java.lang.Object

androidx.work.WorkerFactory

↳androidx.hilt.work.HiltWorkerFactory

Gradle dependencies

compile group: 'androidx.hilt', name: 'hilt-work', version: '1.2.0'

  • groupId: androidx.hilt
  • artifactId: hilt-work
  • version: 1.2.0

Artifact androidx.hilt:hilt-work:1.2.0 it located at Google repository (https://maven.google.com/)

Overview

Worker Factory for the Hilt Extension

A provider for this factory will be installed in the .

Summary

Methods
public abstract ListenableWorkercreateWorker(Context appContext, java.lang.String workerClassName, WorkerParameters workerParameters)

Override this method to implement your custom worker-creation logic.

from WorkerFactorycreateWorkerWithDefaultFallback, getDefaultWorkerFactory
from java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Methods

public abstract ListenableWorker createWorker(Context appContext, java.lang.String workerClassName, WorkerParameters workerParameters)

Override this method to implement your custom worker-creation logic. Use Configuration.Builder.setWorkerFactory(WorkerFactory) to use your custom class.

Throwing an java.lang.Exception here will crash the application. If a WorkerFactory is unable to create an instance of the ListenableWorker, it should return null so it can delegate to the default WorkerFactory.

Returns a new instance of the specified workerClassName given the arguments. The returned worker must be a newly-created instance and must not have been previously returned or invoked by WorkManager. Otherwise, WorkManager will throw an java.lang.IllegalStateException.

Parameters:

appContext: The application context
workerClassName: The class name of the worker to create
workerParameters: Parameters for worker initialization

Returns:

A new ListenableWorker instance of type workerClassName, or null if the worker could not be created

Source

/*
 * Copyright 2020 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package androidx.hilt.work;

import android.content.Context;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.work.ListenableWorker;
import androidx.work.WorkerParameters;

import java.util.Map;

import javax.inject.Provider;

/**
 * Worker Factory for the Hilt Extension
 * <p>
 * A provider for this factory will be installed in the
 * {@link dagger.hilt.components.SingletonComponent}.
 */
public final class HiltWorkerFactory extends androidx.work.WorkerFactory {

    private final Map<String,
            Provider<WorkerAssistedFactory<? extends ListenableWorker>>> mWorkerFactories;

    @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
    HiltWorkerFactory(@NonNull Map<String,
            Provider<WorkerAssistedFactory<? extends ListenableWorker>>> workerFactories) {
        mWorkerFactories = workerFactories;
    }

    @Nullable
    @Override
    public ListenableWorker createWorker(@NonNull Context appContext,
            @NonNull String workerClassName, @NonNull WorkerParameters workerParameters) {
        Provider<WorkerAssistedFactory<? extends ListenableWorker>> factoryProvider =
                mWorkerFactories.get(workerClassName);
        if (factoryProvider == null) {
            return null;
        }
        return factoryProvider.get().create(appContext, workerParameters);
    }
}