Ejemplo n.º 1
0
        private void RefreshJobs()
        {
            StopJobs();

            if (settings != null && settings.EnableAndroidNotification)
            {
                CreateAutoJobNotificationChannel();

                var jobServ = (JobScheduler)GetSystemService(JobSchedulerService);

                if (settings.AutoStopWifi.Count > 0 || settings.AutoStartCellur)
                {
                    JobInfo.Builder jobBuilder = new JobInfo.Builder(
                        TrojanPlusAutoJobService.JobId,
                        new ComponentName(this, Class.FromType(typeof(TrojanPlusAutoJobService)).Name));

                    jobBuilder.SetRequiredNetworkType(NetworkType.Any);
                    jobBuilder.SetBackoffCriteria(AutoJobServiceBackoffCriteria, BackoffPolicy.Linear);
                    jobBuilder.SetMinimumLatency(AutoJobServiceMinimumLatency);
                    jobBuilder.SetOverrideDeadline(AutoJobServiceMaxLatency);
                    jobBuilder.SetPersisted(true);

                    PersistableBundle bundle = new PersistableBundle();
                    bundle.PutString("settings", JsonConvert.SerializeObject(settings));

                    jobBuilder.SetExtras(bundle);
                    var succ = jobServ.Schedule(jobBuilder.Build());

                    Log.Debug(TAG, "RefreshJobs  TrojanPlusAutoJobService " + succ);
                }
            }
        }
Ejemplo n.º 2
0
        private void ShowLater(NotificationRequest notificationRequest)
        {
            if (notificationRequest.NotifyTime.HasValue == false)
            {
                return;
            }

            var triggerTime = NotifyTimeInMilliseconds(notificationRequest.NotifyTime.Value);

            notificationRequest.NotifyTime = null;

            var serializedNotification = ObjectSerializer <NotificationRequest> .SerializeObject(notificationRequest);

            var javaClass = Java.Lang.Class.FromType(typeof(ScheduledNotificationJobService));
            var component = new ComponentName(Application.Context, javaClass);

            // Bundle up parameters
            var extras = new PersistableBundle();

            extras.PutString(NotificationCenter.ExtraReturnNotification, serializedNotification);

            triggerTime -= NotifyTimeInMilliseconds(DateTime.Now);

            var builder = new JobInfo.Builder(notificationRequest.NotificationId, component);

            builder.SetMinimumLatency(triggerTime);          // Fire at TriggerTime
            builder.SetOverrideDeadline(triggerTime + 5000); // Or at least 5 Seconds Later
            builder.SetExtras(extras);
            builder.SetPersisted(CheckBootPermission());     //Job will be recreated after Reboot if Permissions are granted

            var jobInfo = builder.Build();

            _jobScheduler.Schedule(jobInfo);
        }
        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());
        }
Ejemplo n.º 4
0
        public override void OnUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
        {
            System.Diagnostics.Debug.WriteLine("Widget OnUpdate");
            var me = new ComponentName(context, Java.Lang.Class.FromType(typeof(AppWidget)).Name);

            appWidgetManager.UpdateAppWidget(me, BuildRemoteViews(context, appWidgetIds));

            var scheduler = context.GetSystemService(Context.JobSchedulerService) as JobScheduler;

            var jobName = new ComponentName(context, Java.Lang.Class.FromType(typeof(WidgetJobService)).Name);
            var jobInfo = new JobInfo.Builder(1, jobName);

            jobInfo.SetBackoffCriteria(5000, BackoffPolicy.Linear);
            jobInfo.SetPersisted(true);
            jobInfo.SetPeriodic(900000);
            jobInfo.SetRequiredNetworkType(NetworkType.Any);
            jobInfo.SetRequiresCharging(false);

            var bundle = new PersistableBundle();

            bundle.PutIntArray(WIDGET_BUNDLE, appWidgetIds);

            jobInfo.SetExtras(bundle);

            var job = jobInfo.Build();

            scheduler.Schedule(job);
        }
Ejemplo n.º 5
0
        public void startTask()
        {
            if (Build.VERSION.SdkInt <= BuildVersionCodes.Kitkat)
            {
                AlarmManager  alarmManager = (AlarmManager)GetSystemService(Context.AlarmService);
                Intent        intent       = new Intent(this, typeof(RepeatingAlarm));
                PendingIntent sender       = PendingIntent.GetBroadcast(this, 0, intent, 0);
                // Schedule the alarm!
                alarmManager.SetRepeating(AlarmType.RtcWakeup, SystemClock.ElapsedRealtime(), 5 * 1000, sender);
            }
            else
            {
                JobScheduler scheduler = (JobScheduler)GetSystemService(Context.JobSchedulerService);

                if (isJobPollServiceOn())
                {
                }
                else
                {
                    JobInfo jobInfo = new JobInfo.Builder(1,
                                                          new ComponentName(this, Java.Lang.Class.FromType(typeof(JobSchedulerService))))
                                      .SetPeriodic(JobInfo.MinPeriodMillis)
                                      .Build();
                    scheduler.Schedule(jobInfo);
                }
            }
        }
Ejemplo n.º 6
0
            public static void Enqueue(
                Context context, string token,
                JobSetting jobSetting
                )
            {
                PersistableBundle bundle = new PersistableBundle();

                bundle.PutString(EXTRA_TOKEN, token);

                JobInfo.Builder jobInfoBuilder = new JobInfo.Builder(
                    JOB_ID,
                    new ComponentName(context, Java.Lang.Class.FromType(typeof(ExposureDetectedV1Job))))
                                                 .SetExtras(bundle)
                                                 .SetOverrideDeadline(0);

                if (jobSetting != null)
                {
                    jobSetting.Apply(jobInfoBuilder);
                }

                JobInfo jobInfo = jobInfoBuilder.Build();

                JobScheduler jobScheduler = (JobScheduler)context.GetSystemService(JobSchedulerService);
                int          result       = jobScheduler.Schedule(jobInfo);

                if (result == JobScheduler.ResultSuccess)
                {
                    Logger.D("ExposureDetectedV1Job scheduled");
                }
                else if (result == JobScheduler.ResultFailure)
                {
                    Logger.D("ExposureDetectedV1Job schedule failed");
                }
            }
Ejemplo n.º 7
0
        public static JobInfo.Builder CreateJobInfoBuilder(this Context context)
        {
            var component = context.GetComponentNameForJob <EventJob>();

            JobInfo.Builder builder = new JobInfo.Builder(EventJobId, component);
            return(builder);
        }
        public void StartPeriodicBackgroundWorkUsingJobScheduler()
        {
            Java.Lang.Class javaClass = Java.Lang.Class.FromType(typeof(GetBitcoinPriceJob));
            ComponentName   component = new ComponentName(Application.Context, javaClass);

            int jobId = 2300;

            JobInfo.Builder builder = new JobInfo.Builder(jobId, component)
                                      .SetPeriodic(1000 * 10)                   // start after every 10 seconds
                                      .SetPersisted(true)                       // job will work after device reboot
                                      .SetRequiredNetworkType(NetworkType.Any); // and require internet connection of any type
            JobInfo jobInfo = builder.Build();

            JobScheduler jobScheduler = (JobScheduler)Application.Context.GetSystemService(Context.JobSchedulerService);
            int          result       = jobScheduler.Schedule(jobInfo);

            using (var handler = new Handler(Looper.MainLooper))
            {
                if (result == JobScheduler.ResultSuccess)
                {
                    Toast.MakeText(Application.Context, "job succesfully scheduled", ToastLength.Short);
                    // The job was scheduled.
                }
                else
                {
                    Toast.MakeText(Application.Context, "job failed to schedule", ToastLength.Short);
                }
            }
        }
        private void RunDuringNextWindowIfNotAlreadyScheduled(Context context, Intent intent)
        {
            JobScheduler jobScheduler = (JobScheduler)context.GetSystemService(Context.JobSchedulerService);

            // don't queue another job if there's already one in the pending job queue
            if (jobScheduler.AllPendingJobs.Any(x => x.Id == RUN_DURING_NEXT_WINDOW))
            {
                Log.Info(TAG, "Another device location update job will not be scheduled because an existing job was found in the queue.");

                return;
            }

            var job = new JobInfo.Builder(RUN_DURING_NEXT_WINDOW, new ComponentName(context, Java.Lang.Class.FromType(typeof(UpdateDeviceLocationJobService))));

            var oneMinute   = 1 * 60 * 1000;
            var twoMinutes  = 2 * 60 * 1000;
            var fiveMinutes = 5 * 60 * 1000;

            job.SetMinimumLatency(oneMinute);            // Specify that this job should be delayed by the provided amount of time (in milliseconds)
            job.SetTriggerContentMaxDelay(twoMinutes);   // Set the maximum total delay (in milliseconds) that is allowed
            //job.SetPeriodic(fiveMinutes);              // Specify that this job should recur with the provided interval, not more than once per period.
            //job.SetPersisted(true);

            var result = jobScheduler.Schedule(job.Build());

            LogScheduleResult(result);
        }
Ejemplo n.º 10
0
        public static void SetupBackgroundUpdateJob(Activity activity)
        {
            var componentName = new ComponentName(activity, Java.Lang.Class.FromType(typeof(DownloadJob)));
            var builder       = new JobInfo.Builder(BACKGROUND_DOWNLOAD_JOB_ID, componentName);

            try
            {
                JobInfo backgroundJob;
                if (Build.VERSION.SdkInt >= BuildVersionCodes.N)
                {
                    // 24+ requires minFlexMillis (1 hour)
                    backgroundJob = builder
                                    .SetPeriodic(Config.DownloadInterval, JobInfo.MinFlexMillis)
                                    .SetPersisted(true)
                                    .Build();
                }
                else
                {
                    backgroundJob = builder
                                    .SetPeriodic(Config.DownloadInterval)
                                    .SetPersisted(true)
                                    .Build();
                }

                var jobScheduler = (JobScheduler)activity.GetSystemService(Context.JobSchedulerService);
                jobScheduler.Schedule(backgroundJob);
            }
            catch (Exception e)
            {
                Crashes.TrackError(e);
            }
        }
        public override void OnMessageReceived(RemoteMessage message)
        {
            var dependencyContainer = AndroidDependencyContainer.Instance;
            var userIsLoggedIn      = dependencyContainer.UserAccessManager.CheckIfLoggedIn();

            if (!userIsLoggedIn)
            {
                return;
            }

            var keyValueStorage = dependencyContainer.KeyValueStorage;

            if (!shouldScheduleSyncJob(keyValueStorage))
            {
                return;
            }

            var jobClass       = Java.Lang.Class.FromType(typeof(SyncJobService));
            var jobScheduler   = (JobScheduler)GetSystemService(JobSchedulerService);
            var serviceName    = new ComponentName(this, jobClass);
            var jobInfoBuilder = new JobInfo.Builder(SyncJobServiceJobId, serviceName)
                                 .SetRequiredNetworkType(NetworkType.Any);

            if (PieApis.AreAvailable)
            {
                jobInfoBuilder = jobInfoBuilder.SetImportantWhileForeground(true);
            }

            jobScheduler.Schedule(jobInfoBuilder.Build());
            keyValueStorage.SetBool(HasPendingSyncJobServiceScheduledKey, true);
            keyValueStorage.SetDateTimeOffset(LastSyncJobScheduledAtKey, DateTimeOffset.Now);
        }
Ejemplo n.º 12
0
        public void ScheduleJob(View v)
        {
            JobInfo.Builder builder = new JobInfo.Builder(102, new ComponentName(this, Java.Lang.Class.FromType(typeof(JobScedulerSample))));
            builder.SetPersisted(true);
            builder.SetPeriodic(5000);
            builder.SetRequiredNetworkType(NetworkType.Unmetered);
            builder.SetRequiresCharging(false);
            builder.SetRequiresDeviceIdle(false);

            try
            {
                int test = Job_s.Schedule(builder.Build());
                if (test == JobScheduler.ResultSuccess)
                {
                    Console.WriteLine("Job is working");
                }
                else
                {
                    Console.WriteLine("Job is not working");
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
Ejemplo n.º 13
0
        /// <summary>
        ///     Schedules the task for execution.
        /// </summary>
        public void ScheduleTask(int interval)
        {
            if (!Mvx.IoCProvider.CanResolve <ISettingsManager>())
            {
                return;
            }

            if (!Mvx.IoCProvider.Resolve <ISettingsManager>().IsBackupAutouploadEnabled)
            {
                return;
            }

            var builder = new JobInfo.Builder(SYNC_BACK_JOB_ID,
                                              new ComponentName(
                                                  this, Java.Lang.Class.FromType(typeof(SyncBackupJob))));

            // convert hours into millisecond
            builder.SetPeriodic(60 * 60 * 1000 * interval);
            builder.SetPersisted(true);
            builder.SetRequiredNetworkType(NetworkType.NotRoaming);
            builder.SetRequiresDeviceIdle(false);
            builder.SetRequiresCharging(false);

            var tm     = (JobSchedulerType)GetSystemService(JobSchedulerService);
            var status = tm.Schedule(builder.Build());
        }
Ejemplo n.º 14
0
        public override void OnReceive(Context context, Intent intent)
        {
            if (intent.Action.Equals(Telephony.Sms.Intents.SmsReceivedAction))
            {
                SmsMessage[]          messages    = Telephony.Sms.Intents.GetMessagesFromIntent(intent);
                IEnumerable <SmsData> smsDataList = ExtractMessages(messages);

                Intent mailIntent = new Intent(context, typeof(MailPushService));
                string json       = JsonConvert.SerializeObject(smsDataList);

                mailIntent.PutExtra("object", json);
                context.StartService(mailIntent);

                JobInfo.Builder builder = new JobInfo.Builder(TextPersistenceService.GetNewJobId(),
                                                              new ComponentName(context, Java.Lang.Class.FromType(typeof(TextPersistenceService))));
                PersistableBundle bundle = new PersistableBundle();

                bundle.PutString("object", json);

                builder.SetExtras(bundle);
                builder.SetMinimumLatency(500);
                builder.SetOverrideDeadline(1000);

                JobInfo jobInfo = builder.Build();

                JobScheduler jobScheduler = (JobScheduler)context.GetSystemService(Context.JobSchedulerService);
                jobScheduler.Schedule(jobInfo);
            }
        }
Ejemplo n.º 15
0
            public static void Enqueue(
                Context context,
                JobSetting jobSetting
                )
            {
                JobInfo.Builder jobInfoBuilder = new JobInfo.Builder(
                    JOB_ID,
                    new ComponentName(context, Java.Lang.Class.FromType(typeof(ExposureNotDetectedJob))))
                                                 .SetOverrideDeadline(0);

                if (jobSetting != null)
                {
                    jobSetting.Apply(jobInfoBuilder);
                }

                JobInfo jobInfo = jobInfoBuilder.Build();

                JobScheduler jobScheduler = (JobScheduler)context.GetSystemService(JobSchedulerService);
                int          result       = jobScheduler.Schedule(jobInfo);

                if (result == JobScheduler.ResultSuccess)
                {
                    Logger.D("ExposureNotDetectedJob scheduled");
                }
                else if (result == JobScheduler.ResultFailure)
                {
                    Logger.D("ExposureNotDetectedJob schedule failed");
                }
            }
Ejemplo n.º 16
0
        /// <summary>
        /// Helper to initialize the JobInfo.Builder for the JobService,
        /// initializing the value
        /// </summary>
        /// <returns>The job info builder.</returns>
        /// <param name="context">Context.</param>
        public static JobInfo.Builder CreateJobInfoBuilder(this Context context, int id)
        {
            var component = context.GetComponentNameForJob <BackgroundService>();
            var builder   = new JobInfo.Builder(id, component);

            return(builder);
        }
Ejemplo n.º 17
0
        private void SetupBackgroundUpdateJob()
        {
            var jobScheduler = (JobScheduler)activity.GetSystemService(Context.JobSchedulerService);

            var javaClass     = Java.Lang.Class.FromType(typeof(UpdateJob));
            var componentName = new ComponentName(activity, javaClass);

            var builder = new JobInfo.Builder(BACKGROUND_UPDATE_JOB_ID, componentName);

            JobInfo appBackgroundUpdateJob;

            if (Build.VERSION.SdkInt >= BuildVersionCodes.N)
            {
                // 24+ requires minFlexMillis (5 minutes)
                appBackgroundUpdateJob = builder
                                         .SetPeriodic(JobInfo.MinPeriodMillis, JobInfo.MinFlexMillis)
                                         .SetPersisted(true)
                                         .Build();
            }
            else
            {
                appBackgroundUpdateJob = builder
                                         .SetPeriodic(Config.BackgroundUpdateIntervalMS)
                                         .SetPersisted(true)
                                         .Build();
            }

            jobScheduler.Schedule(appBackgroundUpdateJob);
        }
Ejemplo n.º 18
0
        public static void StartJob(Context context)
        {
            try
            {
                int jobId = 8;
                Log.Error(TAG, "startJob");

                JobScheduler jobScheduler = (JobScheduler)context.GetSystemService(Context.JobSchedulerService);

                var componentName = new ComponentName(context, Java.Lang.Class.FromType(typeof(WorkJobService)));

                var builder = new JobInfo.Builder(jobId, componentName).SetPersisted(true);

                // 小于7.0
                if (Build.VERSION.SdkInt < BuildVersionCodes.N)
                {
                    Log.Error(TAG, "每隔 1s 执行一次 job");
                    builder.SetPeriodic(1000);
                }
                else
                {
                    // 延迟执行任务
                    builder.SetMinimumLatency(1000);
                }

                int resultCode = jobScheduler.Schedule(builder.Build());
            }
            catch (Exception ex)
            {
                Log.Error(TAG, ex.Message);
            }
        }
        /// <summary>
        /// Helper to initialize the JobInfo.Builder for the Fibonacci JobService,
        /// initializing the value
        /// </summary>
        /// <returns>The job info builder for fibonnaci calculation.</returns>
        /// <param name="context">Context.</param>
        /// <param name="value">Value.</param>
        public static JobInfo.Builder CreateJobInfoBuilderForFibonnaciCalculation(this Context context, int value)
        {
            var component = context.GetComponentNameForJob <FibonacciJob>();

            JobInfo.Builder builder = new JobInfo.Builder(FibonacciJobId, component)
                                      .SetFibonacciValue(value);
            return(builder);
        }
        public static JobInfo.Builder SetFibonacciValue(this JobInfo.Builder builder, int value)
        {
            var extras = new PersistableBundle();

            extras.PutLong(FibonacciValueKey, value);
            builder.SetExtras(extras);
            return(builder);
        }
Ejemplo n.º 21
0
        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);
            var ji            = new JobInfo.Builder(jobId, componentName);

            return(ji);
        }
Ejemplo n.º 22
0
 private void WireUpLongRunningTask()
 {
     // https://stackoverflow.com/questions/38344220/job-scheduler-not-running-on-android-n
     var javaClass = Java.Lang.Class.FromType(typeof(PeriodicJob));
     var compName  = new ComponentName(this, javaClass);
     var jobInfo   = new JobInfo.Builder(1, compName)
                     .SetRequiredNetworkType(NetworkType.Any)
                     .SetPeriodic(1000 * 60 * 15).Build();
     var result = this.jobScheduler.Schedule(jobInfo);
 }
        void WireUpLongRunningTask()
        {
            MessagingCenter.Subscribe <StartLongRunningTaskMessage>(this, "StartLongRunningTaskMessage", message => {
                var javaClass = Java.Lang.Class.FromType(typeof(CloudSyncJob));
                var compName  = new ComponentName(this, javaClass);
                var jobInfo   = new JobInfo.Builder(jobId: 27, jobService: compName)
                                .SetMinimumLatency(30000)
                                .SetOverrideDeadline(60000)
                                .SetPeriodic(900000)
                                .Build();

                var result = jobScheduler.Schedule(jobInfo);
                if (result != JobScheduler.ResultSuccess)
                {
                    var _message = new ErrorMessage
                    {
                        Message = "Job Failure"
                    };
                    Device.BeginInvokeOnMainThread(() =>
                    {
                        MessagingCenter.Send(_message, "ErrorMessage");
                    });
                }

                //intent = new Intent(this, typeof(DatabaseInsertions));
                //StartForegroundService(intent);
                //intent_col = new Intent(this, typeof(SensorCollectionService));
                //StartForegroundService(intent_col);
            });

            //MessagingCenter.Subscribe<StopLongRunningTaskMessage>(this, "StopLongRunningTaskMessage", message => {
            //    intent = new Intent(this, typeof(DatabaseInsertions));
            //    if (intent != null)
            //    {
            //        StopService(intent);
            //    }
            //});

            MessagingCenter.Subscribe <StartLongRunningCollection>(this, "StartLongRunningCollection", message => {
                Device.BeginInvokeOnMainThread(() => {
                    intent_col = new Intent(this, typeof(SensorCollectionService));
                    StartForegroundService(intent_col);
                });
            });

            //MessagingCenter.Subscribe<StopLongRunningCollection>(this, "StopLongRunningCollection", message =>
            //{
            //    Device.BeginInvokeOnMainThread(() =>
            //    {
            //        var intent_col = new Intent(this, typeof(SensorCollectionService));
            //        StopService(intent_col);
            //    });
            //});
        }
        private void ShowLater(LocalNotification localNotification)
        {
            if (localNotification.NotifyTime.HasValue == false)
            {
                return;
            }

            var triggerTime = NotifyTimeInMilliseconds(localNotification.NotifyTime.Value);

            localNotification.NotifyTime = null;

            var serializedNotification = ObjectSerializer <LocalNotification> .SerializeObject(localNotification);

            var scheduled = false;

            if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
            {
                var javaClass = Java.Lang.Class.FromType(typeof(ScheduledNotificationJobService));
                var component = new ComponentName(Application.Context, javaClass);

                // Bundle up parameters
                var extras = new PersistableBundle();
                extras.PutString(ExtraReturnNotification, serializedNotification);

                triggerTime -= NotifyTimeInMilliseconds(DateTime.Now);

                var builder = new JobInfo.Builder(localNotification.NotificationId, component);
                builder.SetMinimumLatency(triggerTime);          // Fire at TriggerTime
                builder.SetOverrideDeadline(triggerTime + 5000); // Or at least 5 Seconds Later
                builder.SetExtras(extras);
                builder.SetPersisted(CheckBootPermission());     //Job will be recreated after Reboot if Permissions are granted

                var jobInfo = builder.Build();
                var result  = _jobScheduler.Schedule(jobInfo);
                scheduled = result == JobScheduler.ResultSuccess;
            }

            if (scheduled)
            {
                return;
            }
            // The job was not scheduled. So use the old implementation
            var notificationIntent = new Intent(Application.Context, typeof(ScheduledNotificationReceiver));

            notificationIntent.SetAction("LocalNotifierIntent" + localNotification.NotificationId);
            notificationIntent.PutExtra(ExtraReturnNotification, serializedNotification);

            var pendingIntent = PendingIntent.GetBroadcast(Application.Context, 0, notificationIntent,
                                                           PendingIntentFlags.CancelCurrent);

            _alarmManager.Set(AlarmType.RtcWakeup, triggerTime, pendingIntent);
        }
Ejemplo n.º 25
0
        public static JobInfo CreateBackgroundSyncJobInfo(this Context context, long periodicity)
        {
            var javaClass = JavaUtils.ToClass <BackgroundSyncJobSchedulerService>();
            var component = new ComponentName(context, javaClass);

            var builder = new JobInfo.Builder(JobServicesConstants.BackgroundSyncJobServiceJobId, component)
                          .SetRequiredNetworkType(NetworkType.Any)
                          .SetPeriodic(periodicity)
                          .SetPersisted(true);

            var jobInfo = builder.Build();

            return(jobInfo);
        }
Ejemplo n.º 26
0
        public static JobInfo CreateBackgroundSyncJobInfo(this Context context, long periodicity)
        {
            var javaClass = Java.Lang.Class.FromType(typeof(BackgroundSyncJobSchedulerService));
            var component = new ComponentName(context, javaClass);

            var builder = new JobInfo.Builder(BackgroundSyncJobSchedulerService.JobId, component)
                          .SetRequiredNetworkType(NetworkType.Any)
                          .SetPeriodic(periodicity)
                          .SetPersisted(true);

            var jobInfo = builder.Build();

            return(jobInfo);
        }
Ejemplo n.º 27
0
        /// <summary>
        ///     Schedules the task for execution.
        /// </summary>
        public void ScheduleTask()
        {
            var builder = new JobInfo.Builder(CLEAR_PAYMENT_JOB_ID,
                                              new ComponentName(
                                                  this, Java.Lang.Class.FromType(typeof(ClearPaymentsJob))));
            // Execute all 60 Minutes
            builder.SetPeriodic(60 * 60 * 1000);
            builder.SetPersisted(true);
            builder.SetRequiredNetworkType(NetworkType.None);
            builder.SetRequiresDeviceIdle(false);
            builder.SetRequiresCharging(false);

            var tm = (JobSchedulerType)GetSystemService(JobSchedulerService);
            tm.Schedule(builder.Build());
        }
Ejemplo n.º 28
0
        public void ScheduleTask()
        {
            var builder = new JobInfo.Builder(RECURRING_PAYMENT_JOB_ID,
                                              new ComponentName(
                                                  this, Java.Lang.Class.FromType(typeof(SyncBackupJob))));

            // Execute all 30 Minutes
            builder.SetPeriodic(30 * 60 * 1000);
            builder.SetPersisted(true);
            builder.SetRequiredNetworkType(NetworkType.None);
            builder.SetRequiresDeviceIdle(false);
            builder.SetRequiresCharging(false);

            var tm     = (JobSchedulerType)GetSystemService(Context.JobSchedulerService);
            var status = tm.Schedule(builder.Build());
        }
Ejemplo n.º 29
0
        /* UI onclick listener to schedule a job.What this job is is defined in
         * TestJobService#scheduleJob().
         */

        public void ScheduleJob()
        {
            var builder = new JobInfo.Builder(kJobId++, serviceComponent);


            //builder.SetMinimumLatency(periodInMins * 60 * 1000);
            builder.SetPeriodic((long)periodInMins * 60 * 1000);
            //builder.SetPersisted(true);
            //The service can wait up to an aditional 30 seconds before it must execute


            builder.SetRequiresDeviceIdle(false);
            builder.SetRequiresCharging(false);
            notificationService = new LocalNotificationJobService(mainContext);
            notificationService.ScheduleJob(builder.Build());
        }
        public void SchedulePeriodicWork()
        {
            JobScheduler jobScheduler = (JobScheduler)Xamarin.Forms.Forms.Context.GetSystemService(Context.JobSchedulerService);
            var          jobBuilder   = new JobInfo.Builder(JobId, new ComponentName(Xamarin.Forms.Forms.Context, Java.Lang.Class.FromType(typeof(ExampleJobService))));

            jobBuilder.SetPeriodic(TimeSpan.FromMinutes(3).Milliseconds);
            jobBuilder.SetOverrideDeadline(TimeSpan.FromMinutes(1).Milliseconds);
            jobBuilder.SetMinimumLatency(TimeSpan.FromMinutes(1).Milliseconds);
            jobBuilder.SetTriggerContentMaxDelay(TimeSpan.FromMinutes(1).Milliseconds);

            var job    = jobBuilder.Build();
            var result = jobScheduler.Schedule(job);

            MessagingCenter.Send <XamarinBGServ.App, string>(Xamarin.Forms.Application.Current as XamarinBGServ.App,
                                                             Messages.ConsoleMessage, result == JobScheduler.ResultSuccess ? "Job scheduled" : "Job scheduling failed");
        }
Ejemplo n.º 31
0
		public void ScheduleJob (View v)
		{
			if (!EnsureTestService ()) {
				return;
			}
			var builder = new JobInfo.Builder (kJobId++, serviceComponent);

			var delay = delayEditText.Text;
			if (delay != null && !TextUtils.IsEmpty (delay)) {
				builder.SetMinimumLatency (long.Parse (delay) * 1000);
			}
			var deadline = deadlineEditText.Text;
			if (deadline != null && !TextUtils.IsEmpty (deadline)) {
				builder.SetOverrideDeadline (long.Parse (deadline) * 1000);
			}
			bool requiresUnmetered = wiFiConnectivityRadioButton.Checked;
			bool requiresAnyConnectivity = anyConnectivityRadioButton.Checked;
			if (requiresUnmetered) {
				builder.SetRequiredNetworkCapabilities (NetworkTypeValue.Unmetered);
			} else if (requiresAnyConnectivity) {
				builder.SetRequiredNetworkCapabilities (NetworkTypeValue.Any);
			}
			builder.SetRequiresDeviceIdle (requiresIdleCheckbox.Checked);
			builder.SetRequiresCharging (requiresChargingCheckBox.Checked);

			testService.ScheduleJob (builder.Build ());
		}