public static OneTimeWorkRequest CreateOneTime <TWorker>(Action <OneTimeWorkRequest.Builder> workRequestMutator = null, Action <Constraints.Builder> constraintsMutator = null, Action <Data.Builder> inputData = null) { var requestBuilder = new OneTimeWorkRequest.Builder(typeof(TWorker)); if (inputData != default) { var dataBuilder = new Data.Builder(); inputData.Invoke(dataBuilder); requestBuilder.SetInputData(dataBuilder.Build()); } workRequestMutator?.Invoke(requestBuilder); if (constraintsMutator == null) { requestBuilder.SetConstraints(Constraints.None); } else { var constraintsBuilder = new Constraints.Builder(); constraintsMutator?.Invoke(constraintsBuilder); requestBuilder.SetConstraints(constraintsBuilder.Build()); } return(requestBuilder.Build()); }
private void TriggerWork() { var request = new OneTimeWorkRequest.Builder(typeof(AutoBackupWorker)).Build(); var manager = WorkManager.GetInstance(Context); manager.EnqueueUniqueWork(AutoBackupWorker.Name, ExistingWorkPolicy.Replace, request); }
public override bool OnOptionsItemSelected(IMenuItem item) { int id = item.ItemId; if (id == Resource.Id.action_start_worker) { var simpleWorkerRequest = new OneTimeWorkRequest.Builder(typeof(SimpleWorker)) .AddTag(SimpleWorker.TAG) .Build(); WorkManager.GetInstance(this).BeginUniqueWork( SimpleWorker.TAG, ExistingWorkPolicy.Keep, simpleWorkerRequest) .Enqueue(); return(true); } else if (id == Resource.Id.action_start_listenable_worker) { var simpleListenableWorkerRequest = new OneTimeWorkRequest.Builder(typeof(SimpleListenableWorker)) .AddTag(SimpleListenableWorker.TAG) .Build(); WorkManager.GetInstance(this).BeginUniqueWork( SimpleListenableWorker.TAG, ExistingWorkPolicy.Keep, simpleListenableWorkerRequest) .Enqueue(); return(true); } return(base.OnOptionsItemSelected(item)); }
public void simpleWrk() { var simpleWorkerRequest = new OneTimeWorkRequest.Builder(typeof(SimpleWorker)) .AddTag(SimpleWorker.TAG) .Build(); WorkManager.GetInstance(context).BeginUniqueWork( SimpleWorker.TAG, ExistingWorkPolicy.Keep, simpleWorkerRequest) .Enqueue(); }
public void StartKeepWork() { WorkManager.GetInstance(this).CancelAllWorkByTag(TAG_KEEP_WORK); Log.Debug(TAG, "keep-> dowork startKeepWork"); OneTimeWorkRequest oneTimeWorkRequest = new OneTimeWorkRequest.Builder(typeof(KeepLiveWork)) .SetBackoffCriteria(AndroidX.Work.BackoffPolicy.Linear, 5, Java.Util.Concurrent.TimeUnit.Seconds) .AddTag(TAG_KEEP_WORK) .Build(); WorkManager.GetInstance(this).Enqueue(oneTimeWorkRequest); }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); Xamarin.Essentials.Platform.Init(this, savedInstanceState); workerManager = WorkManager.GetInstance(Application.Context); workerManager.CancelAllWork(); workerManager.PruneWork(); SetContentView(Resource.Layout.activity_main); progressBar = FindViewById <ProgressBar>(Resource.Id.progressBar1); textView = FindViewById <TextView>(Resource.Id.textView1); Button createWork = FindViewById <Button>(Resource.Id.button1); createWork.Click += (sender, e) => { textView.Text = string.Empty; var oneTimeWorkRequest = new OneTimeWorkRequest.Builder(typeof(MyWorker)) .AddTag("MyWorker") .SetInitialDelay(TimeSpan.FromSeconds(10)) .Build(); workerManager.BeginUniqueWork("MyWorker", ExistingWorkPolicy.Replace, oneTimeWorkRequest).Enqueue(); }; Button createListenableWork = FindViewById <Button>(Resource.Id.button2); createListenableWork.Click += (sender, e) => { textView.Text = string.Empty; var periodicWorkRequest = new PeriodicWorkRequest.Builder(typeof(MyListenableWorker), TimeSpan.FromMinutes(10)) .SetBackoffCriteria(BackoffPolicy.Linear, TimeSpan.FromSeconds(10)) .AddTag("MyListenableWorker") .Build(); workerManager.Enqueue(periodicWorkRequest); workerManager.GetWorkInfosByTagLiveData("MyListenableWorker").Observe(this, this); }; Button cancelListenableWork = FindViewById <Button>(Resource.Id.button3); cancelListenableWork.Click += (sender, e) => { workerManager.CancelAllWorkByTag("MyListenableWorker"); }; }
private void BackupNow(object sender, EventArgs e) { if (string.IsNullOrEmpty(Globals.Database.LoadSetting(UserSettings.PhotoBackupPrefix))) { AutoBackupCell.switch_button.Checked = false; Activity.ShowAlert(GetString(Resource.String.cannot_backup), GetString(Resource.String.cannot_set_up_backup_location)); return; } var workConstraints = new Constraints.Builder() .SetRequiredNetworkType(NetworkType.NotRequired).Build(); AndroidX.Work.Data myData = new AndroidX.Work.Data.Builder().PutBoolean("BackupNow", true).Build(); var workRequest = new OneTimeWorkRequest.Builder(typeof(PhotosBackupWorker)) .SetInputData(myData) .SetConstraints(workConstraints).Build(); WorkManager.GetInstance(Context).Enqueue(workRequest); }
public override void OnReceive(Context context, Intent intent) { _loggerService.StartMethod(); if (intent.Action != Intent.ActionMyPackageReplaced) { _loggerService.EndMethod(); return; } WorkManager workManager = WorkManager.GetInstance(context); var worker = new OneTimeWorkRequest.Builder( Java.Lang.Class.FromType(typeof(UpgradeWorker)) ).Build(); _ = workManager.Enqueue(worker); _loggerService.EndMethod(); }
private void ScheduleTokenSync(string appToken) { var inputData = new AndroidX.Work.Data.Builder() .PutString(TokenSyncWorker.UserIdParamName, "some id") .PutString(TokenSyncWorker.AppTokenParamName, appToken) .Build(); var tokenSyncWorkerRequest = new OneTimeWorkRequest.Builder(typeof(TokenSyncWorker)) .SetConstraints(new Constraints.Builder() .SetRequiredNetworkType(NetworkType.Connected) .Build()) .SetInputData(inputData) .AddTag(TokenSyncWorker.TAG) .Build(); AndroidX.Work.WorkManager.GetInstance(this).BeginUniqueWork( TokenSyncWorker.TAG, ExistingWorkPolicy.Replace, tokenSyncWorkerRequest) .Enqueue(); }
protected override void RegisterNative(JobInfo jobInfo) { this.CancelNative(jobInfo); //WorkManager.Initialize(this.context.AppContext, new Configuration()) var constraints = new Constraints.Builder() .SetRequiresBatteryNotLow(jobInfo.BatteryNotLow) .SetRequiresCharging(jobInfo.DeviceCharging) .SetRequiredNetworkType(ToNative(jobInfo.RequiredInternetAccess)) .Build(); var data = new Data.Builder(); data.PutString(ShinyJobWorker.ShinyJobIdentifier, jobInfo.Identifier); if (jobInfo.Repeat) { var request = new PeriodicWorkRequest.Builder(typeof(ShinyJobWorker), TimeSpan.FromMinutes(15)) .SetConstraints(constraints) .SetInputData(data.Build()) .Build(); this.Instance.EnqueueUniquePeriodicWork( jobInfo.Identifier, ExistingPeriodicWorkPolicy.Replace, request ); } else { var worker = new OneTimeWorkRequest.Builder(typeof(ShinyJobWorker)) .SetInputData(data.Build()) .SetConstraints(constraints) .Build(); this.Instance.EnqueueUniqueWork( jobInfo.Identifier, ExistingWorkPolicy.Append, worker ); } }
public override async Task Schedule(JobInfo jobInfo) { await base.Schedule(jobInfo); //WorkManager.Initialize(this.context.AppContext, new Configuration()) var constraints = new Constraints.Builder() .SetRequiresBatteryNotLow(jobInfo.BatteryNotLow) .SetRequiresCharging(jobInfo.DeviceCharging) .SetRequiredNetworkType(ToNative(jobInfo.RequiredInternetAccess)) .Build(); var data = new Data.Builder(); foreach (var parameter in jobInfo.Parameters) { data.Put(parameter.Key, parameter.Value); } if (jobInfo.Repeat) { var request = PeriodicWorkRequest .Builder .From <ShinyJobWorker>(TimeSpan.FromMinutes(20)) .SetConstraints(constraints) .SetInputData(data.Build()) .Build(); WorkManager.Instance.EnqueueUniquePeriodicWork( jobInfo.Identifier, ExistingPeriodicWorkPolicy.Replace, request ); } else { var worker = new OneTimeWorkRequest.Builder() .SetInputData(data.Build()) .SetConstraints(constraints); } }
public bool SetNewFutureWork(int workId) { var logger = new OurLoggerService(); logger.LogInformation($"Setting new service worker for ${workId} started"); var workData = new Data.Builder(); workData.PutInt("WORK_NO", workId); Random random = new Random(); OneTimeWorkRequest someWork = new OneTimeWorkRequest .Builder(typeof(FutureWorker)) .SetInputData(workData.Build()) .SetInitialDelay(random.Next(1, 30), timeUnit: TimeUnit.Seconds) .Build(); WorkManager.Instance.Enqueue(someWork); logger.LogInformation($"Setting new service worker for ${workId} complete"); return(true); }