Android Workmanager:发行JobserviceContext:执行时的客户端定时



我们使用的是2.1.0 Workmanager版本。

implementation "androidx.work:work-runtime:2.1.0"

当我们运行一项服务,该服务负责从Web导入数据并插入本地SQLITE时,它需要大约15分钟。但是10分钟后,我们从系统中的错误低于错误。

2 2567-2567/? I/JobServiceContext: Client timed out while executing (no jobFinished received). sending onStop. com.xxxx/androidx.work.impl.background.systemjob.SystemJobService jId=353, u0
08-05 16:58:10.467 29795-29858/com.xxxx I/WM-WorkerWrapper: Work [ id=5e29ca91-fa5a-4d08-838f-01db64522f4a, tags={ com.xxx.xxxSync, RWORK_XXX_SYNC } ] was cancelled
    java.util.concurrent.CancellationException: Task was cancelled.
        at androidx.work.impl.utils.futures.AbstractFuture.cancellationExceptionWithCause(AbstractFuture.java:1184)
        at androidx.work.impl.utils.futures.AbstractFuture.getDoneValue(AbstractFuture.java:514)
        at androidx.work.impl.utils.futures.AbstractFuture.get(AbstractFuture.java:475)
        at androidx.work.impl.WorkerWrapper$2.run(WorkerWrapper.java:284)
        at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:75)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
        at java.lang.Thread.run(Thread.java:818)

但实际上发生的是背景服务仍在继续下载并插入数据库。

有什么方法可以手动增加时间?

有什么方法可以手动增加时间?

无法更改超时时间,对于长期运行的任务,最好将工作分开并链接。

您可以将条目分为块,甚至使它们并行执行,甚至可能会提高性能。

但是,对于运行15分钟的操作,将其放置在后台上不是一个好主意。它将消耗大量网络资源和电池电量。您的用户可能需要取消/暂停操作或随时查看进度。

前景服务更好,因为只要可见通知,并且用户可以看到任务的进度并可以与之交互。

JobScheduler要求您在10分钟内完成执行。您可以使用WorkContinuation分开WorkRequest s和链条。查看WorkManager.beginWith API的变体以获取更多信息。

例如,例如

https://developer.android.com/reference/androidx/work/workmanager.html#beginwith(java.util.list.list%3candroidx.work.ontimework.onemethwork.ontimeworkrequest%3E(

相关内容

  • 没有找到相关文章

最新更新