【发布时间】:2018-08-28 07:53:29
【问题描述】:
我想安排 2 个不同的定期任务,为此我正在使用工作管理器。 1. 上传文件到服务器 - 每 20 分钟 2. 每15分钟调用一次API
对于 API 调用(日常操作),以下是我的代码:
PeriodicWorkRequest.Builder dailyWorkBuilder =
new PeriodicWorkRequest.Builder(CheckAccount.class, 15,
TimeUnit.MINUTES)
.setConstraints(new Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build());
PeriodicWorkRequest DailyJob = dailyWorkBuilder.build();
WorkManager.getInstance().enqueueUniquePeriodicWork("DailyJob", ExistingPeriodicWorkPolicy.REPLACE,DailyJob);
要上传文件,我使用以下代码:
PeriodicWorkRequest.Builder wifiWorkBuilder =
new PeriodicWorkRequest.Builder(FileUpload.class, 20,
TimeUnit.MINUTES)
.setConstraints(new Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build());
PeriodicWorkRequest wifiWork = wifiWorkBuilder.build();
WorkManager.getInstance().enqueueUniquePeriodicWork("wifiJob", ExistingPeriodicWorkPolicy.REPLACE,wifiWork);
现在我面临两个困难: 1. 如果我打开应用程序 - 假设在打开应用程序后我的 Activity 是 HomeActivity 在这个活动中我编写的 dailyWorkBuilder 代码(每 20 分钟后执行一次)将在我每次打开应用程序时被调用。如果我没有打开应用程序,它将在 20 分钟后被调用,但在 20 分钟之前我打开应用程序它会被调用。所以在这里我想检查任务是否没有运行,那么只有当我打开应用程序时它不应该执行
- 它还会调用 wifiWorkBuilder(每 15 分钟执行一次的任务),每次打开应用程序时都会调用它。这两个任务是完全不同的,不相互依赖,但如果一个任务被调用,另一个任务也会在指定时间之前被调用。
上面的代码有什么问题。任何建议将不胜感激。谢谢
【问题讨论】: