- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试遵循 https://developer.android.com/training/dependency-injection/hilt-jetpack#workmanager 的指南并遇到以下错误
E/WM-WorkerFactory: Could not instantiate com.example.android.hilt.ExampleWorker
java.lang.NoSuchMethodException: <init> [class android.content.Context, class androidx.work.WorkerParameters]
class ExampleWorker @WorkerInject constructor(
@Assisted appContext: Context,
@Assisted workerParams: WorkerParameters,
val workerDependency: AppNavigator
) : Worker(appContext, workerParams) {
override fun doWork(): Result {
Log.d("WORKER", "I am the worker, got dependency: $workerDependency")
return Result.success()
}
}
NOTE: The
AppNavigator
is provided in NavigationModule as@Binds abstract fun bindNavigator(impl: AppNavigatorImpl): AppNavigator
.
Also note, replacingAppNavigator
withAppDatabase
which is@Singleton
does not help.
MainActivity
开始工作的方式
override fun onStart() {
super.onStart()
enqueueWorker(applicationContext)
}
private fun enqueueWorker(context: Context) {
val request = OneTimeWorkRequestBuilder<ExampleWorker>().build()
WorkManager.getInstance(context).enqueue(request)
}
app/build.gradle
中的 Gradle 依赖项(在
aosp#158843197 中提及)
kapt 'androidx.hilt:hilt-compiler:1.0.0-alpha01'
Worker
的依赖注入(inject)现在正在工作。
最佳答案
更新(2021 年 3 月 24 日):
由于androidx.work-*
版本 2.6.0-alpha01
, WorkManager
使用 androidx.startup
初始化 WorkManager。
对于 AndroidManifest.xml
的新要求更改, 检查 this回答。
原答案:
根据 WorkManager Configuration and Initialization documentation , 使用 Configuration.Provider
您的Application
上的界面, 你必须 remove the default initializer :
<!-- In your AndroidManifest.xml -->
<provider
android:name="androidx.work.impl.WorkManagerInitializer"
android:authorities="${applicationId}.workmanager-init"
tools:node="remove" />
否则,默认初始化程序仍将运行,清除您的自定义初始化及其
HiltWorkerFactory
.
关于Android WorkManager Worker 无法使用 Dagger Hilt `@WorkerInject` 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62355282/
我正在尝试遵循 https://developer.android.com/training/dependency-injection/hilt-jetpack#workmanager 的指南并遇到以
我是一名优秀的程序员,十分优秀!