用户使用WorkManager连接或断开WiFi时如何安排工作?

时间:2018-12-22 09:41:23

标签: android android-workmanager

当用户连接(和断开连接)WiFi时,我要执行一些任务。在android O之前,我在清单中使用隐式意图。但是现在由于新的限制,我不能再使用它们了。 我尝试使用新组件WorkManager来安排用户连接到Wifi时要执行的任务,但是我不知道如何设置此特定约束。 Constraints.Builder()只有一种与网络相关的方法,它是setRequiredNetworkType()

您能建议我如何正确设置吗?

1 个答案:

答案 0 :(得分:1)

您可以定义这样的约束

 Constraints myConstraints = new Constraints.Builder()
                    .setRequiredNetworkType(NetworkType.CONNECTED)
                    // Many other constraints are available, see the
                    // Constraints.Builder reference
                    .build();

            PeriodicWorkRequest.Builder job =
                    new PeriodicWorkRequest.Builder(MyJob.class, 15,
                            TimeUnit.MINUTES).setConstraints(myConstraints);

            // Create the actual work object:
            PeriodicWorkRequest periodicJob = job.build();
            // Then enqueue the recurring task:
            WorkManager.getInstance().enqueue(mergeInspectionsRequest);

编辑

要只运行一次作业,请使用OneTimeWorkRequest

  OneTimeWorkRequest onetimeJob = new OneTimeWorkRequest.Builder(MyJob.class)
                    .setConstraints(myConstraints).build();
WorkManager.getInstance().enqueue(onetimeJob);