private void ScheduleSyncJob(long accountId) { // JobScheduler was added in API 21 if (Build.VERSION.SdkInt < BuildVersionCodes.Lollipop) { return; } var extras = new PersistableBundle(); extras.PutLong("AccountId", accountId); var builder = new JobInfo.Builder(unchecked ((int)accountId), new ComponentName(this, Java.Lang.Class.FromType(typeof(MySyncService)))) .SetRequiredNetworkType(NetworkType.Any) .SetExtras(extras); if (Build.VERSION.SdkInt >= BuildVersionCodes.O) { builder.SetRequiresBatteryNotLow(true); } var jobScheduler = (JobScheduler)this.GetSystemService(Context.JobSchedulerService); jobScheduler.Schedule(builder.Build()); }
// todo p238-239 schedule location job service public void StartTracking() { var javaClass = Java.Lang.Class.FromType(typeof(LocationJobService)); var componentName = new ComponentName(Application.Context, javaClass); var jobBuilder = new JobInfo.Builder(1, componentName); jobBuilder.SetOverrideDeadline(1000); jobBuilder.SetPersisted(true); jobBuilder.SetRequiresDeviceIdle(false); jobBuilder.SetRequiresBatteryNotLow(true); var jobInfo = jobBuilder.Build(); var jobScheduler = (JobScheduler)Application.Context.GetSystemService(Context.JobSchedulerService); jobScheduler.Schedule(jobInfo); }
private void RegisterJob() { // Se crea jobInfo, metada que usa el job scheduler para ejecutar el servicio var javaClass = Java.Lang.Class.FromType(typeof(Scheduler)); var jobInfoBuilder = new JobInfo.Builder(JOB_ID, new ComponentName(this, javaClass)); var jobInfo = jobInfoBuilder .SetRequiresBatteryNotLow(false) .SetPeriodic(900000) .Build(); jobScheduler = (JobScheduler)GetSystemService(JobSchedulerService); var scheduleResult = jobScheduler.Schedule(jobInfo); if (JobScheduler.ResultSuccess == scheduleResult) { Toast.MakeText(this, "Job inicializado con exito", ToastLength.Long).Show(); } else { Toast.MakeText(this, "Error al inicializar job", ToastLength.Long).Show(); } }