Ich möchte einen Arbeiter in meiner Android -App (Pure Kotlin) für so einige Hintergrundarbeiten verwenden. Ich verwende den Hilt für die Abhängigkeitsinjektion, aber ich habe einige Probleme, wenn ich ein benutzerdefiniertes Objekt an den Arbeiter weitergeben muss. < /P>
Mein Code ist wie folgt: < /p>
Code: Select all
@HiltWorker
class BackgroundWorker @AssistedInject constructor(
@Assisted appContext: Context,
@Assisted workerParams: WorkerParameters,
val mockClass: MockClass
) : CoroutineWorker(appContext, workerParams) {
init {
Log.d("deb", "Worker: Initiated")
}
override suspend fun doWork(): Result {
Log.d("deb", "Worker: Doing work!")
return Result.success()
}
}
< /code>
und meine Mockklasse lautet: < /p>
@Module
@InstallIn(SingletonComponent::class)
object MockModule {
@Singleton
@Provides
fun provideMockClass(): MockClass = MockClass()
}
class MockClass{}
In meiner OnCreate  -Funktion in meiner Hauptaktivität nenne ich: 
Code: Select all
 WorkManager.getInstance(applicationContext).enqueue(
OneTimeWorkRequestBuilder().build()
)
Um den Arbeiter zu initiieren und de Dowork  aufzurufen. Wenn ich die App starte, sehe ich nicht die Protokolle  und der Appinspector  "fehlgeschlagen" wie der WorkerStatus. WorkerFactory  usw.) und die AndroidManifest.xml  ist gut konfiguriert (mit dem Anbieter  Tag usw.), da ich die Zeile aus kommentiere: 
Dann sehe ich die Protokolle  in meinem Worker  (beide, die Init  und die Dowork  One). Also funktioniert es vollkommen in Ordnung! Aber wenn ich die Zeile übernehme (damit das Mockcass  -Objekt an den Arbeiter übergeben wird), kann der Arbeiter nicht initiieren.  Ich habe auch dafür gesorgt, dass ich alle notwendigen Abhängigkeiten (Work-Runtime-KTX, Hilt-Android, Hilt-Compiler und Hilt-Work) verwende. Ich denke, mein Problem hängt irgendwie mit DI und Hilt zusammen, aber ich kann nicht herausfinden, was es ist. Ich benutze Hilt  für die Abhängigkeitsinjektion in anderen Teilen in meiner App, und sie funktionieren in Ordnung.