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();
            }
        }