即使杀死应用程序后,我也需要每隔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中。
使用下面的代码解决了上面的问题,然后调用DependencyService.Get()。GetEmployeeList()
Xamarin.Forms.Init()