Android 工作管理器类在执行doWork()方法时遇到问题
首先让我更正一下: 工作管理器:可以定义的最小重复间隔为15分钟(与JobScheduler API相同)。 如果这不正确,请让我知道 我创建了以下类,用于执行定期工作请求:Android 工作管理器类在执行doWork()方法时遇到问题,android,scheduled-tasks,android-workmanager,periodic-task,workmanagertaskexecutor,Android,Scheduled Tasks,Android Workmanager,Periodic Task,Workmanagertaskexecutor,首先让我更正一下: 工作管理器:可以定义的最小重复间隔为15分钟(与JobScheduler API相同)。 如果这不正确,请让我知道 我创建了以下类,用于执行定期工作请求: object WorkManagerUtils { fun syncWorkManager() { val myConstraints = Constraints.Builder() .setRequiredNetworkType(NetworkType.CONNECTED)
object WorkManagerUtils {
fun syncWorkManager() {
val myConstraints = Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build()
val syncRequest = PeriodicWorkRequest
.Builder(MyWorker::class.java, 20000, TimeUnit.MILLISECONDS)
.setConstraints(myConstraints)
.build()
WorkManager
.getInstance()
.enqueueUniquePeriodicWork(
Constants.WORKER,
ExistingPeriodicWorkPolicy.KEEP,
syncRequest)
}
}
下面是我的工人班。请检查:
class MyWorker(val context: Context, param: WorkerParameters) : Worker(context, param) {
override fun doWork(): Result {
if (isNetworkAvailable(context)) {
callSyncApi()
} else {
WorkManagerUtils.syncWorkManager()
}
return Result.success()
}
private fun callSyncApi() {
ToastUtils.shortToast(0,"This is working")
}
}
在我的活动中调用此项,如下所示:
WorkManagerUtils.syncWorkManager()
你可以注意到,目前我只是展示吐司作为我的工作。我想检查一下这是否有效
但是吐司没有显示。任何低于15分钟的间隔都将被15分钟所取代 假设您的
ToastUtils.showtoats(…)
工作正常,我相信工作经理选择了15分钟的间隔,并且“保留”现有工作策略阻止了重新安排和测试
我建议在测试时将现有的工作策略更改为“替换”
来自work manager 1.0.0来源:
public final class PeriodicWorkRequest extends WorkRequest {
...
public static final long MIN_PERIODIC_INTERVAL_MILLIS = 15 * 60 * 1000L; // 15 minutes
...
}
public class WorkSpec {
...
public void setPeriodic(long intervalDuration) {
if (intervalDuration < MIN_PERIODIC_INTERVAL_MILLIS) {
...
IntervalDuration = MIN_PERIODIC_INTERVAL_MILLIS;
}
}
...
}
公共最终类PeriodicWorkRequest扩展了WorkRequest{
...
公共静态最终长分钟周期间隔=15*60*1000L;//15分钟
...
}
公共类工作规范{
...
公共无效设置周期(长间隔){
if(间隔时间
setPeriodic
函数重载,应用相同的间隔强制。您好,我必须每10秒调用一次web服务,使用Work manager和Job Scheduler是不可能的,因为它们的最小间隔是15分钟。什么是相同的替代方案?您唯一的选择是使用alarm manager和前台服务来保持您的应用程序处于活动状态-请记住,如果您的应用程序被关闭(存在邪恶的电池优化程序),您需要重新安排。是的,我想是这样,请您提供示例演示链接。我正在从我身边寻找它。谢谢,安卓开发者: