Skip to content

WorkManager not working when app is killed #333

@Newsid

Description

@Newsid

Version Information

  • Visual Studio version: 8.10.4 (build 11)
  • Xamarin.Android version: 11.3.0.4 (Visual Studio Community)
  • Using AndroidX or Support Libraries: Xamarin.AndroidX.Work.Runtime (2.5.0.2)

Describe your Issue:

Im trying to setup a WorkManager that executes a task every 15 minutes. For now I'm doing this test adding an entry in a firebase database.

I'm using the nuget package Xamarin.AndroidX.Work.Runtime (2.5.0.2)

This works fine if the app is in foreground or background, but if I kill the app it stops working.

I'm doing this test with a Nokia 8 Sirocco (api 28) and with a Samsung Galaxy A21S (api 30) that both mount Android Stock.

This is how I launch the work:

private void StartParallelWorkManager(int minutes)
     {
         PeriodicWorkRequest taskLauncher = PeriodicWorkRequest.Builder.From<UniquePeriodicWorker>(TimeSpan.FromMinutes(minutes)).Build();
         WorkManager.GetInstance(Xamarin.Essentials.Platform.AppContext).EnqueueUniquePeriodicWork("TestTask", ExistingPeriodicWorkPolicy.Keep, taskLauncher);
     }

and this is my Worker class:

public class UniquePeriodicWorker : Worker
     {
         public UniquePeriodicWorker(Context context, WorkerParameters workerParameters) : base(context, workerParameters)
         {
         }
    
         public override Result DoWork()
         {
                
             System.Console.WriteLine("{0} DO WORK", DateTime.Now.ToString("dd/MM HH:mm:ss"));
             try
             {
                 _ = CrossCloudFirestore.Current
                              .Instance
                              .Collection("WorkManagerRuns")
                              .AddAsync<DateTime>(DateTime.Now);
             }
             catch(Exception ex)
             {
                 System.Diagnostics.Debug.WriteLine(ex);
             }
             return Result.InvokeSuccess();
         }
     }

Doing the same test in android studio (using Kotlin) works like a charm.

Am I missing something in Xamarin side or Xamarin.AndroidX.Work.Runtime is not capable to achieve the same behavior of the native equivalent??

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions