Android WorkManager Worker нельзя внедрить с помощью Dagger Hilt `@WorkerInject`Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Android WorkManager Worker нельзя внедрить с помощью Dagger Hilt `@WorkerInject`

Сообщение Anonymous »

Я пытаюсь следовать инструкциям https://developer.android.com/training/ ... orkmanager и обнаружил следующую ошибку

Код: Выделить всё

E/WM-WorkerFactory: Could not instantiate com.example.android.hilt.ExampleWorker
java.lang.NoSuchMethodException:  [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()
}
}

ПРИМЕЧАНИЕ. AppNavigator предоставляется в NavigationModule как
@Binds абстрактное забавное связывание Navigator(impl: AppNavigatorImpl): AppNavigator.

Также обратите внимание: замена AppNavigator на AppDatabase, то есть @Singleton, не помогает.
< /blockquote>

И вот как я запускаю рабочий процесс из MainActivity

Код: Выделить всё

    override fun onStart() {
super.onStart()
enqueueWorker(applicationContext)
}

private fun enqueueWorker(context: Context) {
val request = OneTimeWorkRequestBuilder().build()
WorkManager.getInstance(context).enqueue(request)
}
Не знаю, что именно не так.



< strong>ОБНОВЛЕНИЕ: Я создал совершенно новый проект Android, чтобы воспроизвести его. Проект прикреплен к выпуску №158843197. Весь ключевой файл снимок исходного кода доступен на GitHub Gist (если вы хотите быстро просмотреть его).



ОБНОВЛЕНИЕ №2: Решение

Помимо того, что Ян упомянул ниже, проблема заключалась в том, что я пропустил отслеживание Gradle зависимость в app/build.gradle (упоминается в aosp#158843197)

Код: Выделить всё

kapt 'androidx.hilt:hilt-compiler:1.0.0-alpha01'
Внедрение зависимостей для Worker теперь работает.

Подробнее здесь: https://stackoverflow.com/questions/623 ... rkerinject
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»