Android Work Manager-Work Manager是否会100%确保完成后台执行?

I a*_*ent 3 android workmanagers android-workmanager

根据我从文档https://developer.android.com/topic/libraries/architecture/workmanager中阅读的内容,

它说:

即使您的应用被强制退出或设备重新启动,该任务仍然可以保证运行。

那么这意味着,无论如何,在后台执行的任务都会100%执行到完成为止。

例如:

应用程序具有执行工作管理器实施的按钮,该按钮可将数据上传到在线数据库,但需要Internet连接才能上传数据。因此,我的应用程序当前处于离线模式,然后单击按钮。

我的不确定性:

工作管理器是否会在后台运行该过程,并在没有Internet连接的情况下继续重试该过程?并且仅完成并停止该过程,直到建立Internet连接并完成数据上传?

Sag*_*gar 6

工作管理器是否会在后台运行该过程,并在没有Internet连接的情况下继续重试该过程?并且仅完成并停止该过程,直到建立Internet连接并完成数据上传?

它不会隐式尝试连续执行工作并仅在成功后才停止。这取决于doWork()或您返回的结果Worker。如果返回RETRY,则将使用中指定的退避重试该工作WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, long, TimeUnit)

但是,如果在连接互联网时需要执行某些操作,则可以指定适当的约束。对于网络连接,可以如下设置约束:

Constraints myConstraints = new Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build();

 OneTimeWorkRequest mywork=
            new OneTimeWorkRequest.Builder(MyWorker.class)
 .setConstraints(myConstraints)
 .build();
 WorkManager.getInstance().enqueue(mywork);
Run Code Online (Sandbox Code Playgroud)

WorkManager 将确保只有在连接互联网的情况下才能执行您的工作。

  • 当我广告此约束工作经理未上传图像时,但我的手机已连接到 wifi。知道为什么 (2认同)