コード例 #1
0
        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());
        }
コード例 #2
0
        private void TriggerWork()
        {
            var request = new OneTimeWorkRequest.Builder(typeof(AutoBackupWorker)).Build();
            var manager = WorkManager.GetInstance(Context);

            manager.EnqueueUniqueWork(AutoBackupWorker.Name, ExistingWorkPolicy.Replace, request);
        }
コード例 #3
0
        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));
        }
コード例 #4
0
ファイル: SimpleWorker.cs プロジェクト: scave222/workManager
        public void simpleWrk()
        {
            var simpleWorkerRequest = new OneTimeWorkRequest.Builder(typeof(SimpleWorker))
                                      .AddTag(SimpleWorker.TAG)
                                      .Build();

            WorkManager.GetInstance(context).BeginUniqueWork(
                SimpleWorker.TAG, ExistingWorkPolicy.Keep, simpleWorkerRequest)
            .Enqueue();
        }
コード例 #5
0
ファイル: KeepAlive.cs プロジェクト: dorisoy/XF.KeepAlive
        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);
        }
コード例 #6
0
        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");
            };
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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();
        }
コード例 #9
0
        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();
        }
コード例 #10
0
ファイル: JobManager.cs プロジェクト: shinyorg/shiny
        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
                    );
            }
        }
コード例 #11
0
        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);
            }
        }
コード例 #12
0
        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);
        }