首页 > 解决方案 > Android Worker doWork() 遇到 for 循环

问题描述

我从服务器端看到 Android 调用多个 /test API 请求 - 看起来像永无止境的 for 循环。此 API 仅在 TestWorker 类中定义:

class TestWorker(
    context: Context,
    workerParams: WorkerParameters
) : Worker(context, workerParams) {

    override fun doWork(): Result {
        callApiRequest()
        return Result.success()
    }

    private fun callApiRequest() {
        XUseCase.execute()
            .backgroundToMainThread() 
            .subscribe(
                { ->
                    ..
                },
                {
                    ..
                }
            )
    }    

    companion object {
        const val REPEAT_INTERVAL_IN_HOURS = 3L
    }
}

private fun initTestWorker() {
    val constraints = Constraints.Builder()
        .setRequiredNetworkType(NetworkType.CONNECTED)
        .build()

    val workerRequest = PeriodicWorkRequestBuilder<TestWorker>(TestWorker.REPEAT_INTERVAL_IN_HOURS, TimeUnit.HOURS)
        .setConstraints(constraints)
        .build()

    WorkManager
        .getInstance(this)
        .enqueueUniquePeriodicWork("", ExistingPeriodicWorkPolicy.KEEP, workerRequest)
}

initTestWorker() 在 MyApp 的 onCreate() 方法中被调用。我不确定如何,但也许有人经历过类似的行为,从前端我无法重现这个问题。任何使用 Worker 的循环经验?

标签: androidworker

解决方案


推荐阅读