Я работаю над проектом Xamarin Forms.Я хочу создать фоновый сервис в проекте Android.какой-то друг предложил JobDispatcher.
Я обнаружил, что пакет Xamarin NuGet помечен как незарегистрированный https://www.nuget.org/packages/Xamarin.Firebase.JobDispatcher. Когда я использовал Android.App.Job.JobService , он работал идеально, но только с локальным процессом.Если у процесса есть какой-либо код, который вызывает сервер, служба остановится.
public static class NotificationsJobInfo
{
public static JobInfo.Builder CreateJobBuilderUsingJobId<T>(this Context context, int jobId) where T : JobService
{
var javaClass = Java.Lang.Class.FromType(typeof(T));
var componentName = new ComponentName(context, javaClass);
return new JobInfo.Builder(jobId, componentName);
}
}
В MainActivity:
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
StartNotificationsJob();
}
private void StartNotificationsJob()
{
try
{
Intent intent = new Intent(this, typeof(MainActivity));
var jobBuilder = this.CreateJobBuilderUsingJobId<MainJob>(1);
JobInfo jobInfo = jobBuilder
.SetOverrideDeadline(15*60*1000)
//.SetRequiredNetworkType(NetworkType.Any)
//.SetMinimumLatency(15 * 60 * 1000)
//.SetPeriodic(15 * 60 * 1000)//,1000)
.Build();
JobScheduler jobScheduler = (JobScheduler)GetSystemService(JobSchedulerService);
var result = jobScheduler.Schedule(jobInfo);
}
catch (Exception ex)
{
}
}
И класс задания:
[Service(Name = "XXXXXXXXXXXXXX.MainJob", Permission = "android.permission.BIND_JOB_SERVICE")]
public class MainJob : JobService
{
public override bool OnStartJob(JobParameters @params)
{
Task.Run(() =>
{
//Do Some Process
});
return true;
}
public override bool OnStopJob(JobParameters @params)
{
return false;
}
}
Мне нужно создать фоновый сервис, который будет работать вечно и продолжать вызывать сервер, даже после того, как приложение будет убито.