Hilt - WorkManager¶
설정¶
사용법¶
@HiltWorker
어노테이션과 Worker
클래스의 생성자(contructor)에 @AssistedInject
를 사용하여 Worker
를 삽입합니다. Worker
클래스에는 @Singleton
또는 범위가 지저오디지 않은 결합만 사용할 수 있습니다.
또한 다음과 같이 Context
및 WorkerParameters
파라미터에 @Assisted
어노테이션으로 지정해줘야 합니다.
@HiltWorker
public class ExampleWorker extends Worker {
private final WorkerDependency workerDependency;
@AssistedInject
ExampleWorker(
@Assisted @NonNull Context context,
@Assisted @NonNull WorkerParameters params,
WorkerDependency workerDependency
) {
super(context, params);
this.workerDependency = workerDependency;
}
}
수동 초기화¶
HiltWorkerFactory를 사용한 Worker 생성을 위해 수동 초기화 작업이 필요합니다.
버전 2.6.0-alpha01 이후¶
버전 2.6부터 App startup
은 WorkManager는 수동 초기화를 사용해야 합니다. 이를 위해 androidx.startup
노드를 삭제해야 합니다.
다음은 매니페스트에서 WorkManagerInitializer
노드만 삭제하는 설정입니다:
AndroidManifest.xml
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
android:exported="false"
tools:node="merge">
<!-- If you are using androidx.startup to initialize other components -->
<meta-data
android:name="androidx.work.WorkManagerInitializer"
android:value="androidx.startup"
tools:node="remove" />
</provider>
버전 2.6.0-alpha01 이전¶
2.6 이전의 WorkManager 버전을 사용하는 동안에는 workmanager-init
을 대신 삭제합니다.
AndroidManifest.xml
<provider
android:name="androidx.work.impl.WorkManagerInitializer"
android:authorities="${applicationId}.workmanager-init"
tools:node="remove" />