Android应用程序处于终止状态的Workmanager定期工作请求

问题描述 投票:0回答:1

即使杀死应用程序后,我也需要每隔X分钟同步服务器中的数据。我将WorkManger与PeriodicWorkRequest一起使用,每隔X分钟触发一次。即使我们杀死该应用程序,这也会每隔X分钟触发一次。退出应用程序后如何处理静态类或变量,我遇到了问题?

示例代码:

public void InitiateWorkManager()
    { 
        PeriodicWorkRequest myWorkRequest = PeriodicWorkRequest.Builder.From<SyncClass>(System.TimeSpan.FromMinutes(15)).Build();

        WorkManager.Instance.EnqueueUniquePeriodicWork(“MyIUniqueId”, ExistingPeriodicWorkPolicy.Keep, myWorkRequest); 
    }

SyncClass.cs:

  public class SyncClass : Worker
   {
        Context _context;
        public SyncClass(Context context, WorkerParameters workerParameters) : base(context, workerParameters)
        {
            _context = context;
        }

        public override Result DoWork()
        {
             var url = Constants.url;
            var list=  DependencyService.Get<IEmployee>().GetEmployeeList();
        }

  return Result.InvokeSuccess();
}

Constants.cs:

public static class Constants
{
public static string url =“www.xyz.com/getdata”
}

这在应用程序处于前台和后台状态时很好用,但是在killed状态下失败,因为DependencyService类为null。

这里从nuget包“ Xamarin.Form”访问静态类DependencyService,如果应用程序处于终止状态,则为null。

Link解释了类似的问题,但这更多地涉及过程处理。

是否有任何方法可以在DoWork()中重新定义此静态类/变量,是否有任何提示/建议? Xamarin.Android或java / kotlin中。

android xamarin.forms xamarin.android android-workmanager
1个回答
0
投票

使用下面的代码解决了上面的问题,然后调用DependencyService.Get()。GetEmployeeList()

Xamarin.Forms.Init()
© www.soinside.com 2019 - 2024. All rights reserved.