ich habe mir mal zum Test einen Worker nach Tutorial programmiert.
Dieser soll dann zukünftig in meiner Applikation im Hintergrund arbeiten und schreibt dann im DoWork() einfach nur erstmal einen LogText.
Später möchte ich das dann noch erweitern.
Der Worker funktioniert tatsächlich und schreibt laut Logcat auch den Logtext alle 15 Minuten aus.
Allerdings gibt es hier das Problem, dass der Worker scheinbar immer 6 mal den Logtext schreibt.
Beim Debuggen konnte ich feststellen, dass der Aufruf über Enqueue nur einmal durchlaufen wird, also der Fehler liegt nicht in der Activity.
In der DoWork() Methode läuft er allerdings mehrfach durch und teilweise auch nur zur Hälfte und startet dann einen neuen Methodenaufruf.
Weiß einer zufällig, weshalb der Worker die Methode DoWork() je Intanz nach Ablauf der 15 Minuten bei mir 6 mal durchläuft?
Aufruf in meiner Activity:
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
SetContentView(Resource.Layout.activity_main);
PeriodicWorkRequest taxWorkRequest = PeriodicWorkRequest.Builder.From<SearchWorker> (TimeSpan.FromMinutes(15)).Build();
WorkManager.Instance.Enqueue(taxWorkRequest);
}
Workerklasse:
public class SearchWorker : Worker
{
public SearchWorker(Context context, WorkerParameters workerParameters) : base(context, workerParameters)
{
}
public override Result DoWork()
{
Android.Util.Log.Debug("TestWorker", $"Test abgeschlossen");
return Result.InvokeSuccess();
}
}
Das Problem ist, dass ich danach mal testweise einen Mailversand von mir an mich gehangen habe, der mir dann auch tatsächlich wie im Logtext 6 mal ne Mail gleichzeitig schickt.
Oder muss man noch irgendwie sicherstellen, dass nicht mehrere Instanzen abgefragt werden?