Code: Select all
2025-07-10 13:35:31.107 7160-7238 WM-WorkerFactory com.android.tracker_mobile E Could not instantiate com.android.tracker_mobile.data.worker.NotificationSyncWorker
java.lang.NoSuchMethodException: com.android.tracker_mobile.data.worker.NotificationSyncWorker. [class android.content.Context, class androidx.work.WorkerParameters]
at java.lang.Class.getConstructor0(Class.java:3395)
...
2025-07-10 13:35:31.107 7160-7238 WM-WorkerWrapper com.android.tracker_mobile E Could not create Worker com.android.tracker_mobile.data.worker.NotificationSyncWorker
- Language: Kotlin 2.1.21
- Hilt:
(ksp)Code: Select all
com.google.dagger:hilt-android:2.56.2
- (Kapt)
Code: Select all
androidx.hilt:hilt-work:1.0.0
- (Kapt)
Code: Select all
androidx.hilt:hilt-compiler:1.0.0
< /li>
< /ul>
build.gradle.KTS
>>
Code: Select all
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.ksp)
id("com.google.dagger.hilt.android")
id("kotlin-kapt")
}
dependencies {
implementation(libs.hilt.android)
ksp(libs.hilt.compiler)
implementation(libs.hilt.navigation.compose)
implementation(libs.androidx.work.runtime.ktx)
implementation(libs.androidx.hilt.work)
kapt(libs.androidx.hilt.work.compiler)
}
< /code>
undroidManifest.xml
< /code>
Anwendungsklasse < /h3>
@HiltAndroidApp
class TrackerApplication : Application(), Configuration.Provider {
@Inject lateinit var workerFactory: HiltWorkerFactory
override val workManagerConfiguration: Configuration
get() = Configuration.Builder()
.setWorkerFactory(workerFactory)
.build()
}
< /code>
meldificationsyncworker < /h3>
@HiltWorker
class NotificationSyncWorker @AssistedInject constructor(
@Assisted context: Context,
@Assisted params: WorkerParameters,
private val notificationDao: NotificationDao,
private val notificationApi: NotificationApi
) : CoroutineWorker(context, params) {
companion object { const val WORK_NAME = "NotificationSyncWorker" }
override suspend fun doWork(): Result = withContext(Dispatchers.IO) {
try {
val pending = notificationDao.getPendingSyncNotifications()
if (pending.isEmpty()) return@withContext Result.success()
// synchronization logic
Result.success()
} catch (e: Exception) {
Result.retry()
}
}
}
< /code>
Planen des Arbeiters < /h3>
fun scheduleSyncWorker(context: Context) {
val constraints = Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build()
val workRequest = OneTimeWorkRequestBuilder()
.setConstraints(constraints)
.build()
WorkManager.getInstance(context).enqueueUniqueWork(
NotificationSyncWorker.WORK_NAME,
ExistingWorkPolicy.KEEP,
workRequest
)
}
Entfernte Standard WorkmanagerInitializer aus dem Manifest. Hilt. /> < /li>
Könnte es einen Konflikt zwischen KSP und Kapt geben? /> < /li>
< /ol>
Ich würde mich über Hinweise freuen! < /P.>