Android 中的 Worker 可以持续重试执行请求多长时间?

For how long can a Worker in Android keep retrying doing a request?

这是我在 Whosebug 中的第一个问题,所以请原谅我可能犯的任何常见错误。我在 Android 中使用 CoroutineWorker 在 GraphQL 中进行突变,这个想法主要是通过推送通知接收令牌,然后使用此 Worker 向服务器发送突变。

我已经设法做得很好,但我正在分析当我向它添加 BackOff 策略时该工作人员的行为方式。假设这个 worker 发送了第一个突变,由于某种原因,服务器宕机了……所以没问题,使用 backOff 策略它将继续发送并重试。但问题是,在没有达到结果的情况下不断重试多长时间。成功()逻辑?有限制吗?
我在官方文档中找不到任何信息:
Retry and Backoff

这是我的工人的样子:

class Worker @AssistedInject constructor(
    @Assisted params: WorkerParameters,
    appContext: Context,
    private val repo: Repo
) : CoroutineWorker(appContext, params) {

    override suspend fun doWork(): Result = withContext(Dispatchers.IO) {
        try {
            repo.sendMutation().data?.let{ r ->
              if(r.result == "OK") {
                    Result.Succes()
              }
            }
            Result.Retry()    
        } catch (e: Exception) {
            Result.retry()
        }
    }
}

这是我配置的退避策略:

        worker.enqueue(
            OneTimeWorkRequestBuilder<Worker>()
                .setBackoffCriteria(
                    BackoffPolicy.EXPONENTIAL,
                    OneTimeWorkRequest.MIN_BACKOFF_MILLIS,
                    TimeUnit.MILLISECONDS)
                .setConstraints(
                    Constraints.Builder()
                        .setRequiredNetworkType(NetworkType.CONNECTED)
                        .build()
                ).build()
        )

如果能得到任何帮助,我将不胜感激。

所以,最后我能够在 IssueTracker 中找到这个 post:https://issuetracker.google.com/issues/115708468?pli=1

事实证明,在到达 Result.Succes() 之前,它永远不会结束重试。