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