Wie benutze ich Hilt DI mit WorkerManager in Android?Android

Forum für diejenigen, die für Android programmieren
Anonymous
 Wie benutze ich Hilt DI mit WorkerManager in Android?

Post by Anonymous »

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:

Code: Select all

    val mockClass: MockClass
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.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post