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); }
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 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); } }
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); } }
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); }
/// <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()); }
/// <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()); }
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()); }
/* 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"); }
/// <summary> /// Schedules the task for execution. /// </summary> public void ScheduleTask() { var builder = new JobInfo.Builder(RECURRING_PAYMENT_JOB_ID, new ComponentName( this, Class.FromType(typeof(RecurringPaymentJob)))); // Execute all 60 Minutes builder.SetPeriodic(JOB_INTERVAL); builder.SetPersisted(true); builder.SetRequiredNetworkType(NetworkType.None); builder.SetRequiresDeviceIdle(false); builder.SetRequiresCharging(false); var tm = (JobSchedulerType)GetSystemService(JobSchedulerService); tm.Schedule(builder.Build()); }
public static void ScheduleUpdateNow(Context context) { var jobScheduler = context.GetSystemService(Java.Lang.Class.FromType(typeof(JobScheduler))) as JobScheduler; jobScheduler.CancelAll(); var parameters = new PersistableBundle(); parameters.PutLong("UserID", data.UserId); Console.WriteLine("UserID: " + data.UserId); var jobBuilder = new JobInfo.Builder(1, new ComponentName(context, Java.Lang.Class.FromType(typeof(UpdateService)))); jobBuilder.SetPeriodic(Interval); var jobInfo = jobBuilder.SetExtras(parameters).Build(); var result = jobScheduler?.Schedule(jobInfo); Console.WriteLine("Scheduled a job. Result: " + result); }
protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetContentView(Resource.Layout.Main); Button b = FindViewById <Button>(Resource.Id.button); b.Click += delegate { ComponentName cn = new ComponentName(this, Class.FromType(typeof(MyJobService))); JobInfo.Builder builder = new JobInfo.Builder(123, cn); long millis = 5 * 60 * 1000; builder.SetPeriodic(millis); JobScheduler js = (JobScheduler)GetSystemService(Context.JobSchedulerService); js.Schedule(builder.Build()); }; }
public void StartJob() { try { //Supports After APi level 21 only if (Build.VERSION.SdkInt < BuildVersionCodes.Lollipop) { return; } ComponentName serviceComponent = new ComponentName(ActivtyContext, Java.Lang.Class.FromType(typeof(DataLoaderJobService))); if (Build.VERSION.SdkInt >= BuildVersionCodes.N) { Jobbuilder = new JobInfo.Builder(Jobid, serviceComponent); Jobbuilder.SetMinimumLatency(4000); Jobbuilder.SetRequiredNetworkType(NetworkType.Any); Jobbuilder.SetRequiresCharging(false); Jobbuilder.SetOverrideDeadline(4000); Jobbuilder.SetBackoffCriteria(3000, BackoffPolicy.Linear); Jobbuilder.SetPersisted(true); } else { Jobbuilder = new JobInfo.Builder(Jobid, serviceComponent); Jobbuilder.SetPeriodic(2000); Jobbuilder.SetPersisted(true); Jobbuilder.SetRequiredNetworkType(NetworkType.Any); Jobbuilder.SetRequiresCharging(false); } Jobscheduler = (JobScheduler)ActivtyContext.GetSystemService(Context.JobSchedulerService); int result = Jobscheduler.Schedule(Jobbuilder.Build()); if (result == JobScheduler.ResultSuccess) { } } catch (Exception e) { Crashes.TrackError(e); } }
private void StartService() { if (mJobScheduler != null) { // Thread.CurrentThread.CurrentCulture = new CultureInfo("bg-BG"); CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("bg-BG"); mJobScheduler = (JobScheduler)GetSystemService(Context.JobSchedulerService); JobScheduler = new ComponentName(this, Java.Lang.Class.FromType(typeof(MyJobService))); JobInfo.Builder builder = new JobInfo.Builder(kJobId++, JobScheduler); builder.SetRequiredNetworkType(NetworkType.Any); builder.SetPeriodic(3600000); // 2400000 40 min, 7200000, ////////////3600000 // builder.SetPeriodic(900000); // 2400000 40 min, // 1500 20 000 - 2s // 25 min builder.SetPersisted(true); mJobScheduler.Schedule(builder.Build()); } }
public static void StartJob(Context context) { Log.Error(TAG, "startJob"); JobScheduler jobScheduler = (JobScheduler)context.GetSystemService(Context.JobSchedulerService); JobInfo.Builder builder = new JobInfo.Builder(8, new ComponentName(context.PackageName, typeof(WorkJobService).Name)).SetPersisted(true); // 小于7.0 if (Build.VERSION.SdkInt < BuildVersionCodes.N) { builder.SetPeriodic(1000); } else { builder.SetMinimumLatency(1000); } jobScheduler.Schedule(builder.Build()); }
private void Weatherupdatefrequency_ItemSelected(object sender, AdapterView.ItemSelectedEventArgs e) { long interval_minutes = int.Parse(Resources.GetStringArray(Resource.Array.listvaluesweatherupdatefrequency)[e.Position]); JobInfo.Builder jobBuilder = new JobInfo.Builder(56114281, new ComponentName(Application.Context, Java.Lang.Class.FromType(typeof(GrabWeatherJob)))); jobBuilder.SetPersisted(true); jobBuilder.SetPeriodic(1000 * 60 * interval_minutes); jobBuilder.SetRequiredNetworkType(Android.App.Job.NetworkType.Unmetered); JobScheduler jobScheduler = (JobScheduler)Application.Context.GetSystemService(Context.JobSchedulerService); int result = jobScheduler.Schedule(jobBuilder.Build()); if (result == JobScheduler.ResultSuccess) { Log.Info("LiveDisplay", "Job Result Sucess"); } else { Log.Info("LiveDisplay", "Job Result Not Sucess"); } }
/// <summary> /// Schedules the task for execution. /// </summary> public void ScheduleTask(int interval) { if (!ServiceLocator.Current.GetInstance <ISettingsFacade>().IsBackupAutouploadEnabled) { return; } var builder = new JobInfo.Builder(SYNC_BACK_JOB_ID, new ComponentName( this, Class.FromType(typeof(SyncBackupJob)))); // convert hours into millisecond builder.SetPeriodic(JOB_INTERVAL * interval); builder.SetPersisted(true); builder.SetRequiredNetworkType(NetworkType.NotRoaming); builder.SetRequiresDeviceIdle(false); builder.SetRequiresCharging(false); var tm = (JobSchedulerType)GetSystemService(JobSchedulerService); tm.Schedule(builder.Build()); }
public void ScheduleTask() { var settingsManager = Mvx.Resolve <ISettingsManager>(); if (!settingsManager.IsBackupAutouploadEnabled) { return; } var builder = new JobInfo.Builder(SYNC_BACK_JOB_ID, new ComponentName( this, Java.Lang.Class.FromType(typeof(SyncBackupJob)))); // Execute all 30 Minutes builder.SetPeriodic(60 * 60 * 1000 * settingsManager.BackupSyncRecurrence); builder.SetPersisted(true); builder.SetRequiredNetworkType(NetworkType.NotRoaming); builder.SetRequiresDeviceIdle(false); builder.SetRequiresCharging(false); var tm = (JobSchedulerType)GetSystemService(JobSchedulerService); var status = tm.Schedule(builder.Build()); }
public static void ScheduleJob(Context context) { Debug.WriteLine(typeof(BackgroundDataLoaderJobService)); var javaClass = Java.Lang.Class.FromType(typeof(BackgroundDataLoaderJobService)); var jobBuilder = new JobInfo.Builder(1, new ComponentName(context, javaClass)) .SetRequiredNetworkType(NetworkType.NotRoaming); if (Build.VERSION.SdkInt >= BuildVersionCodes.N) { Debug.WriteLine("Service min period: " + JobInfo.MinPeriodMillis); jobBuilder.SetPeriodic(3600000, 10000); // => 60 min +/- 10 Seconds } else { jobBuilder.SetMinimumLatency(3595000); // min => 59 min 55 Seconds jobBuilder.SetOverrideDeadline(3605000); // max => 60 min 05 Seconds } Debug.WriteLine("Starting Job"); JobScheduler scheduler = context.GetSystemService(Context.JobSchedulerService) as JobScheduler; scheduler?.Schedule(jobBuilder.Build()); }
public static void StartJob(Context context) { JobScheduler jobScheduler = (JobScheduler)context.GetSystemService(Context.JobSchedulerService); //setPersisted 在设备重启依然执行 // 需要增加权限 RECEIVE_BOOT_COMPLETED JobInfo.Builder builder = new JobInfo.Builder(8, new ComponentName(context.PackageName, typeof(AliveJobService).Name)).SetPersisted(true); // 小于7.0 if (Build.VERSION.SdkInt < BuildVersionCodes.N) { // 每隔 1s 执行一次 job // 版本23 开始 进行了改进,最小周期为 5s builder.SetPeriodic(1000); } else { // 延迟执行任务 builder.SetMinimumLatency(1000); } jobScheduler.Schedule(builder.Build()); }
public static bool scheduleJob(Context ctx, JobCallbacks callbacks, TimeSpan?minLatency, TimeSpan?maxLatency, TimeSpan?interval = null, bool requireIdle = false, bool requireCharger = false, NetworkType requiredNet = NetworkType.Any, bool requireAboveLowBattery = false, bool requireAboveLowStorage = false) { int jobID = -1; bool success = false; jobID = callbacks.JobUniqueID; allJobs.Add(jobID, callbacks); try { ComponentName JobServiceComponent = new ComponentName(ctx, Java.Lang.Class.FromType(typeof(PeriodicTask))); var jobBuilder = new JobInfo .Builder(jobID, JobServiceComponent) .SetRequiresDeviceIdle(requireIdle) .SetRequiresCharging(requireCharger) .SetRequiredNetworkType(requiredNet) .SetRequiresBatteryNotLow(requireAboveLowBattery) .SetRequiresStorageNotLow(requireAboveLowStorage) ; long intervalMillisecond = (long)(interval?.TotalMilliseconds ?? 0); if (intervalMillisecond > 0L) { if (intervalMillisecond < JobInfo.MinPeriodMillis) { throw new Exception("Period interval must be at least: " + JobInfo.MinPeriodMillis); } jobBuilder.SetPeriodic(intervalMillisecond); } else { jobBuilder.SetMinimumLatency((long)(minLatency?.TotalMilliseconds ?? 0L)); jobBuilder.SetOverrideDeadline((long)(maxLatency?.TotalMilliseconds ?? 0L)); } JobInfo job = jobBuilder.Build(); var manager = (JobSchedulerType)ctx.GetSystemService(Context.JobSchedulerService); var status = manager.Schedule(job); if (status != JobSchedulerType.ResultSuccess) { AndroidLevelLogger.e(TAG, "Job schedule failed for id: " + jobID); success = false; } else { success = true; } } catch (Exception ex) { AndroidLevelLogger.e(TAG, ex); } if (!success && allJobs.ContainsKey(jobID)) { allJobs.Remove(jobID); } return(success); }
private void StartJob(Context context, Intent implicitIntent) { try { this.mJobScheduler = (JobScheduler)this.GetSystemService(Context.JobSchedulerService); this.mJobScheduler.Cancel(this.jobId); if (this.jobId != -1) { this.mJobScheduler.Cancel(this.jobId); } jobId = 100; if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop) { ComponentName component = null; PackageManager pm = context.PackageManager; //查出所有的能匹配这个隐式意图的服务列表 var resolveInfo = pm.QueryIntentServices(implicitIntent, 0); if (resolveInfo != null || resolveInfo.Count == 1) { ResolveInfo serviceInfo = resolveInfo[0]; //取出包名 string packageName = serviceInfo.ServiceInfo.PackageName; //取出服务名 string className = serviceInfo.ServiceInfo.Name; //用包名和服务名来创建一个ComponentName对象 component = new ComponentName(packageName, className); } if (component != null) { var builder = new JobInfo.Builder(this.jobId, component); //24 if (Build.VERSION.SdkInt >= BuildVersionCodes.N) { //7.0以上延迟3s执行 builder.SetMinimumLatency(30000L); ////执行的最小延迟时间 builder.SetOverrideDeadline(30000L); ////执行的最长延时时间 builder.SetMinimumLatency(30000L); builder.SetBackoffCriteria(30000L, 0); //线性重试方案 } else { //每隔3s执行一次job builder.SetPeriodic(30000L); } builder.SetRequiredNetworkType(NetworkType.Any); // 当插入充电器,执行该任务 builder.SetRequiresCharging(true); builder.SetPersisted(true); this.mJobScheduler.Schedule(builder.Build()); } } } catch (Java.Lang.Exception ex) { ex.PrintStackTrace(); } }