Ошибка при запуске HiltWorker при запуске приложения: NoSuchMethodExceptionAndroid

Форум для тех, кто программирует под Android
Anonymous
Ошибка при запуске HiltWorker при запуске приложения: NoSuchMethodException

Сообщение Anonymous »

Я пытаюсь заставить Worker автоматически запускаться при запуске приложения в целях тестирования. Идея состоит в том, что когда я открываю приложение, Worker получает список отслеживаемых аниме и показывает уведомление для каждого из них.
Мое приложение настроено следующим образом:

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

@HiltAndroidApp
class NotakuApplication : Application(), Configuration.Provider {

@Inject
lateinit var workerFactory: HiltWorkerFactory

override fun onCreate() {
super.onCreate()
val workRequest = OneTimeWorkRequestBuilder().build()
WorkManager.getInstance(this).enqueue(workRequest)
}

override fun getWorkManagerConfiguration(): Configuration {
return Configuration.Builder()
.setWorkerFactory(workerFactory)
.build()
}
}

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

@HiltWorker
class MyWorker @AssistedInject constructor(
@Assisted context: Context,
@Assisted workerParams: WorkerParameters,
private val getTrackedAnimesUseCase: GetTrackedAnimesUseCase
) : CoroutineWorker(context, workerParams) {

override suspend fun doWork(): Result {
return try {
val trackedAnimes = getTrackedAnimesUseCase.execute()
trackedAnimes.forEach { anime ->
val message = "Episode ${anime.episodeNumber} of ${anime.title} is available"
sendNotification(applicationContext, anime.title, message)
}
Result.success()
} catch (e: Exception) {
e.printStackTrace()
Result.retry()
}
}

private fun sendNotification(context: Context, title: String, message:  String) {
val notificationManager =
context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager

val channelId = "notaku_channel"
if (notificationManager.getNotificationChannel(channelId) == null) {
val channel = NotificationChannel(
channelId,
"Notaku Notifications",
NotificationManager.IMPORTANCE_DEFAULT
)
notificationManager.createNotificationChannel(channel)
}

val builder = NotificationCompat.Builder(context, channelId)
.setSmallIcon(android.R.drawable.ic_dialog_info)
.setContentTitle(title)
.setContentText(message)
.setPriority(NotificationCompat.PRIORITY_DEFAULT)

notificationManager.notify(System.currentTimeMillis().toInt(), builder.build())
}
}
Мои зависимости build.gradle (модуль приложения):

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

dependencies {
// Core y Lifecycle
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.lifecycle.runtime.ktx)
implementation(libs.androidx.activity.compose)
implementation ("androidx.hilt:hilt-work:1.0.0")
kapt ("androidx.hilt:hilt-compiler:1.0.0")
implementation ("androidx.work:work-runtime-ktx:2.8.0")

// Compose
implementation(platform(libs.androidx.compose.bom))
implementation(libs.androidx.compose.ui)
implementation(libs.androidx.compose.ui.graphics)
implementation(libs.androidx.compose.ui.tooling.preview)
implementation(libs.androidx.compose.material3)
implementation(libs.androidx.navigation.compose)
implementation(libs.androidx.navigation.runtime.ktx)
implementation(libs.androidx.hilt.common)
implementation(libs.androidx.hilt.work)
debugImplementation(libs.androidx.compose.ui.tooling)
debugImplementation(libs.androidx.compose.ui.test.manifest)

// Testing
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
androidTestImplementation(platform(libs.androidx.compose.bom))
androidTestImplementation(libs.androidx.compose.ui.test.junit4)

// Hilt
implementation(libs.hilt.android)
implementation(libs.androidx.hilt.navigation.compose)
kapt(libs.hilt.compiler)

// Firebase
implementation(platform(libs.firebase.bom))
implementation(libs.firebase.firestore)
implementation(libs.firebase.auth)
implementation(libs.firebase.analytics)

// Google Credentials / Identity
implementation(libs.androidx.credentials)
implementation(libs.androidx.credentials.play.services.auth)
implementation(libs.googleid)

// Retrofit and Moshi for JSON
implementation(libs.retrofit)
implementation(libs.converter.moshi)
implementation(libs.moshi.kotlin)

// HTTP Client interceptors
implementation(libs.okhttp)
implementation(libs.logging.interceptor)

// Images
implementation(libs.coil.compose)

// Icons
implementation(libs.androidx.compose.material.icons.extended)
implementation(libs.lottie.compose)
}
Однако, когда я открываю приложение, я получаю следующую ошибку:
E/WM-WorkerFactory: не удалось создать экземпляр com.sergiogv.notaku.MyWorker
java.lang.NoSuchMethodException: com.sergiogv.notaku.MyWorker. [class android.content.Context, class androidx.work.WorkerParameters]
Буду признателен, если вы поможете мне устранить эту ошибку.

Подробнее здесь: https://stackoverflow.com/questions/797 ... dexception

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