Работа 2.8.0 + Hilt не инициализирует воркерыAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Работа 2.8.0 + Hilt не инициализирует воркеры

Сообщение Anonymous »

Подобных вопросов много, но я не нашел решения, которое мне помогло бы.
app/build.gradle

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

    implementation 'androidx.work:work-runtime-ktx:2.8.0'

implementation "com.google.dagger:hilt-android:2.44"
implementation "androidx.hilt:hilt-navigation-compose:1.1.0-alpha01"
implementation 'androidx.hilt:hilt-work:1.0.0'
kapt "com.google.dagger:hilt-android-compiler:2.44"
AndroidManifest.xml

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

        
            android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
tools:node="remove">

Приложение

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

@HiltAndroidApp
class MyApp : Application(), Configuration.Provider {
@Inject
lateinit var workerFactory: HiltWorkerFactory

// other stuff

override fun getWorkManagerConfiguration() =
Configuration.Builder()
.setMinimumLoggingLevel(Log.VERBOSE)
.setWorkerFactory(workerFactory)
.build()
}
Один из моих работников

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

@HiltWorker
class Some @AssistedInject constructor(
@Assisted appContext: Context,
@Assisted params: WorkerParameters,
private val someRepository: SomeRepository,
) : CoroutineWorker(appContext, params) {
}
Я получаю экземпляр диспетчера работ с помощью WorkManager.getInstance(context)
Worker не инициализируется с исключением

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

Could not instantiate some.path.SomeWorker
java.lang.NoSuchMethodException: some.path.SomeWorker. [class android.content.Context, class androidx.work.WorkerParameters]
at java.lang.Class.getConstructor0(Class.java:2363)
at java.lang.Class.getDeclaredConstructor(Class.java:2201)
at androidx.work.WorkerFactory.createWorkerWithDefaultFallback(WorkerFactory.java:95)
at androidx.work.impl.WorkerWrapper.runWorker(WorkerWrapper.java:243)
at androidx.work.impl.WorkerWrapper.run(WorkerWrapper.java:145)
at androidx.work.impl.utils.SerialExecutorImpl$Task.run(SerialExecutorImpl.java:96)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at java.lang.Thread.run(Thread.java:1012)
2023-02-12 22:48:56.505 22235-22316 WM-WorkerWrapper
E  Could not create Worker some.path.SomeWorker
Если я оставлю в конструкторе только контекстные и рабочие параметры, все будет работать нормально

Подробнее здесь: https://stackoverflow.com/questions/755 ... ng-workers
Ответить

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

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

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

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

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