【问题标题】:Workmanager periodic work request in android app killed stateandroid应用程序终止状态下的Workmanager定期工作请求
【发布时间】:2020-05-21 15:00:21
【问题描述】:

我需要每隔 X 分钟从服务器同步一次数据,即使在终止应用程序之后也是如此。 我使用带有 PeriodicWorkRequest 的 WorkManger 每 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();
}

常量.cs:

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

当应用程序处于前台和后台状态但由于 DependencyService 类为空而在终止状态下失败时,这可以正常工作。

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

Link 解释了类似的问题,但这更多的是关于进程处理。

有没有办法在 DoWork() 中重新定义这个静态类/变量,有什么提示/建议吗? Xamarin.Android 或 java/kotlin。

【问题讨论】:

    标签: android xamarin.forms xamarin.android android-workmanager


    【解决方案1】:

    在调用 DependencyService.Get().GetEmployeeList() 之前,使用下面的代码解决了上述问题

    Xamarin.Forms.Init()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多