如何为WIFI和蜂窝数据设置不同的Work Manager约束

时间:2018-08-06 12:52:03

标签: android android-jetpack android-workmanager

在我的应用程序中,我使用工作管理器进行定期工作。在下面的代码中,如果设备具有互联网连接,则我的工作每4小时执行一次。

PeriodicWorkRequest.Builder myWorkBuilder =
                new PeriodicWorkRequest.Builder(FileUpload.class, 4,
                        TimeUnit.HOURS)
                        .setConstraints(new Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build());

        PeriodicWorkRequest myWork = myWorkBuilder.build();
        WorkManager.getInstance().enqueueUniquePeriodicWork("myJob", ExistingPeriodicWorkPolicy.REPLACE,myWork);

现在我想更改时间-如果设备连接到WIFI,则应每20分钟执行一次工作;如果设备连接到蜂窝数据,则应在12小时后执行工作。如何实现这一目标。预先感谢

1 个答案:

答案 0 :(得分:0)

一种可能的解决方案是在您的Text { text: "<span style=\"font-family:SF Pro Text;\"> Outer <span style=\"font-family:SF Pro Text;\">Inner Text</span> Text </span>"; textFormat: Text.RichText } 中添加NetworkType.CONNECTED的约束。然后,在您的PeriodicWorkRequest中,使用foxtrot merge检查您是否已连接WIFI或蜂窝数据,然后采取相应措施