C# 如何在Xamarin Android上实现JobScheduler

C# 如何在Xamarin Android上实现JobScheduler,c#,xamarin,xamarin.android,android-jobscheduler,android-workmanager,C#,Xamarin,Xamarin.android,Android Jobscheduler,Android Workmanager,我正在做一个Xamarin表单项目。我想在android项目中创建一个后台服务。一位朋友建议我去工作 我发现Xamarin NuGet包标记为未列出 . 当我使用Android.App.Job.JobService时,它工作得非常完美,但只使用本地进程。如果进程有任何调用服务器的代码,服务将停止 公共静态类通知JobInfo { public static JobInfo.Builder createJobBuilderSingJobid此上下文上下文,int jobId其中T:JobServi

我正在做一个Xamarin表单项目。我想在android项目中创建一个后台服务。一位朋友建议我去工作

我发现Xamarin NuGet包标记为未列出 . 当我使用Android.App.Job.JobService时,它工作得非常完美,但只使用本地进程。如果进程有任何调用服务器的代码,服务将停止

公共静态类通知JobInfo { public static JobInfo.Builder createJobBuilderSingJobid此上下文上下文,int jobId其中T:JobService { var javaClass=Java.Lang.Class.FromTypeoft; var componentName=新的ComponentNamecontext,javaClass; 返回新的JobInfo.BuilderjobId,componentName; } } 在主要活动中:

受保护的重写void OnCreateBundle savedInstanceState { base.OnCreatesavedInstanceState; //从主布局资源设置视图 SetContentViewResource.Layout.Main; 开始通知工作; } 私有无效开始通知作业 { 尝试 { 意向意向=新意向这是主要活动的类型; var jobBuilder=this.CreateJobBuilderUsingJobId1; JobInfo=作业生成器 .SETOVERRIDEADLINE15*60*1000 //.SetRequiredNetworkTypeNetworkType.Any //.设置最小延迟15*60*1000 //.SetPeriodic15*60*1000/,1000 建筑 JobScheduler JobScheduler=JobscheduleTargetSystemServiceJobschedulerService; var result=jobScheduler.SchedulejobInfo; } 捕获异常 { } } 以及职业类别:

[ServiceName=xxxxxxxxxxxxx.MainJob,Permission=android.Permission.BIND\u JOB\u SERVICE] 公共类主作业:JobService { 公共覆盖bool onStartJobParameters@params { Task.Run=> { //做一些处理 }; 返回true; } 公共覆盖bool onstopJobParameters@params { 返回false; } } 我需要做一个永远工作的后台服务,即使在应用程序被终止后也要继续呼叫服务器。

你最好的选择是从Xamarin使用。你可以找到一个

Xamarin的博客上有一篇关于这个话题的新文章:

请记住,如果您的应用程序被强制停止,则只有在用户再次启动您的应用程序后,您的后台工作才会恢复。但WorkManager将跟踪工作,绝不会遗漏任何内容


你可以参考。请记住,作为JobScheduler的WorkManager的最小周期间隔为15分钟,这不是一个精确的延迟,而是一个最小间隔。

。我昨天对这个答案投了赞成票,但现在我想我应该投反对票,但我不能。我现在发现,尽管WorkManger设计为在后台运行,但它在大多数设备中并不运行。请参阅WorkManager遵守Android操作系统的一般规则强制停止的应用程序将删除其所有警报/作业,直到用户再次手动启动该应用程序。除此之外,OEM还以限制后台应用的方式修改了stoc Android操作系统。WorkManager没有普通应用程序以外的其他权限。也就是说,您不能期望应用程序可以在后台无限期地运行,而无需用户干预: