Я пытаюсь заставить Worker автоматически запускаться при запуске приложения в целях тестирования. Идея состоит в том, что когда я открываю приложение, Worker получает список отслеживаемых аниме и показывает уведомление для каждого из них.
Однако, когда я открываю приложение, я получаю следующую ошибку:
E/WM-WorkerFactory: Could not instantiate com.sergiogv.notaku.MyWorker
java.lang.NoSuchMethodException: com.sergiogv.notaku.MyWorker. [class android.content.Context, class androidx.work.WorkerParameters]
Вот соответствующие части моего кода:
@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 {
val trackedAnimes = getTrackedAnimesUseCase.execute()
trackedAnimes.forEach { anime ->
val message = "Episodio ${anime.episodeNumber} de ${anime.title} disponible"
sendNotification(applicationContext, anime.title, message)
}
return Result.success()
}
private fun sendNotification(context: Context, title: String, message: String) {
val channelId = "notaku_channel"
val notificationManager = context.getSystemService(NotificationManager::class.java)
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())
}
}
class GetTrackedAnimesUseCase @Inject constructor(private val repository: FirebaseRepository) {
suspend fun execute(): List {
return repository.getTrackedAnimes()
}
}
Это соответствующие части моих файлов сборки:
[versions]
hiltAndroid = "2.57.2"
hiltNavigationCompose = "1.3.0"
hiltCommon = "1.3.0"
hiltWork = "1.3.0"
[libraries]
hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "hiltAndroid" }
hilt-compiler = { module = "com.google.dagger:hilt-compiler", version.ref = "hiltAndroid" }
androidx-hilt-navigation-compose = { module = "androidx.hilt:hilt-navigation-compose", version.ref = "hiltNavigationCompose" }
androidx-hilt-common = { group = "androidx.hilt", name = "hilt-common", version.ref = "hiltCommon" }
androidx-hilt-work = { group = "androidx.hilt", name = "hilt-work", version.ref = "hiltWork" }
[plugins]
hilt = { id = "com.google.dagger.hilt.android", version.ref = "hiltAndroid" }
plugins {
alias(libs.plugins.android.application) apply false
alias(libs.plugins.kotlin.android) apply false
id("com.google.dagger.hilt.android") version "2.57.1" apply false
}
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
id("com.google.dagger.hilt.android")
kotlin("kapt")
}
android {
namespace = "com.sergiogv.notaku"
compileSdk = 36
defaultConfig {
applicationId = "com.sergiogv.notaku"
minSdk = 26
targetSdk = 36
versionCode = 1
versionName = "1.0"
}
}
dependencies {
// Hilt + WorkManager
implementation(libs.hilt.android)
kapt(libs.hilt.compiler)
implementation(libs.androidx.hilt.navigation.compose)
implementation(libs.androidx.hilt.common)
implementation(libs.androidx.hilt.work)
implementation("androidx.work:work-runtime-ktx:2.8.0")
}
А это мой AndroidManifest.xml:
Подробнее здесь: https://stackoverflow.com/questions/797 ... dexception
Ошибка при запуске HiltWorker при запуске приложения: NoSuchMethodException ⇐ Android
Форум для тех, кто программирует под Android
1760571080
Anonymous
Я пытаюсь заставить Worker автоматически запускаться при запуске приложения в целях тестирования. Идея состоит в том, что когда я открываю приложение, Worker получает список отслеживаемых аниме и показывает уведомление для каждого из них.
Однако, когда я открываю приложение, я получаю следующую ошибку:
E/WM-WorkerFactory: Could not instantiate com.sergiogv.notaku.MyWorker
java.lang.NoSuchMethodException: com.sergiogv.notaku.MyWorker. [class android.content.Context, class androidx.work.WorkerParameters]
Вот соответствующие части моего кода:
@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 {
val trackedAnimes = getTrackedAnimesUseCase.execute()
trackedAnimes.forEach { anime ->
val message = "Episodio ${anime.episodeNumber} de ${anime.title} disponible"
sendNotification(applicationContext, anime.title, message)
}
return Result.success()
}
private fun sendNotification(context: Context, title: String, message: String) {
val channelId = "notaku_channel"
val notificationManager = context.getSystemService(NotificationManager::class.java)
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())
}
}
class GetTrackedAnimesUseCase @Inject constructor(private val repository: FirebaseRepository) {
suspend fun execute(): List {
return repository.getTrackedAnimes()
}
}
Это соответствующие части моих файлов сборки:
[versions]
hiltAndroid = "2.57.2"
hiltNavigationCompose = "1.3.0"
hiltCommon = "1.3.0"
hiltWork = "1.3.0"
[libraries]
hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "hiltAndroid" }
hilt-compiler = { module = "com.google.dagger:hilt-compiler", version.ref = "hiltAndroid" }
androidx-hilt-navigation-compose = { module = "androidx.hilt:hilt-navigation-compose", version.ref = "hiltNavigationCompose" }
androidx-hilt-common = { group = "androidx.hilt", name = "hilt-common", version.ref = "hiltCommon" }
androidx-hilt-work = { group = "androidx.hilt", name = "hilt-work", version.ref = "hiltWork" }
[plugins]
hilt = { id = "com.google.dagger.hilt.android", version.ref = "hiltAndroid" }
plugins {
alias(libs.plugins.android.application) apply false
alias(libs.plugins.kotlin.android) apply false
id("com.google.dagger.hilt.android") version "2.57.1" apply false
}
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
id("com.google.dagger.hilt.android")
kotlin("kapt")
}
android {
namespace = "com.sergiogv.notaku"
compileSdk = 36
defaultConfig {
applicationId = "com.sergiogv.notaku"
minSdk = 26
targetSdk = 36
versionCode = 1
versionName = "1.0"
}
}
dependencies {
// Hilt + WorkManager
implementation(libs.hilt.android)
kapt(libs.hilt.compiler)
implementation(libs.androidx.hilt.navigation.compose)
implementation(libs.androidx.hilt.common)
implementation(libs.androidx.hilt.work)
implementation("androidx.work:work-runtime-ktx:2.8.0")
}
А это мой AndroidManifest.xml:
Подробнее здесь: [url]https://stackoverflow.com/questions/79790346/error-when-running-a-hiltworker-on-app-start-nosuchmethodexception[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия