【发布时间】: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