Hilt로 WorkManager를 Inject하려면 WorkerFactory를 만들어서 넘겨줘야한다.
@HiltAndroidApp
class ExampleApplication : Application(), Configuration.Provider {
@Inject lateinit var workerFactory: HiltWorkerFactory
override fun getWorkManagerConfiguration() =
Configuration.Builder()
.setWorkerFactory(workerFactory)
.build()
}
workManager 2.6.0-alpha01부터는 startup을 사용해 초기화하기 때문에
AndroidManifest에서 startup을 사용하지 않게 변경하거나 startup에서 workManager를 초기화하지 않도록 해야한다. 가이드문서에서는 아래 코드로 링크가 걸려있다.
<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.impl.WorkManagerInitializer"
android:value="androidx.startup"
tools:node="remove" />
</provider>
<!-- If you want to disable android.startup completely. -->
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
tools:node="remove">
</provider>
그런데 두가지 방법 중 위의 방법으로는 안된다. 왜냐면 2.7.0-alpha01부터 패키지가 변경되었기 때문! impl을 제거하고 아래처럼 작성하면 된다.
<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>
'개발 > 안드로이드' 카테고리의 다른 글
국가별 날짜 시간 패턴 가져오기 (0) | 2022.12.07 |
---|---|
Room의 DAO에서 suspend를 사용하려할 때 Not sure how to convert a Cursor to this method's return type (0) | 2022.06.28 |
안드로이드 스튜디오 범블비에서 에뮬레이터를 독립적으로 실행하려면 (0) | 2022.01.29 |
안드로이드 에뮬레이터 시간 안맞을 때 (0) | 2021.11.24 |
SQLite 쿼리 로그 보기 + Room에서 쿼리 로그 보기 (0) | 2021.11.24 |
댓글