【发布时间】:2021-05-20 21:34:58
【问题描述】:
在我的应用程序中,如果要上传的数据可用,我需要定期将数据上传到服务器。这不需要立即发生,但也可以延迟几分钟。 WorkManager 似乎是我所读到的一个很好的起点。
我现在不确定该选择哪种方式:
-
我可以在每次上传内容时安排一次性作业,并在上传失败时重试
WorkManager。 -
我可以安排一个周期性的工作来检查是否有工作要做,如果有,做工作。
这两种解决方案似乎各有利弊。选择取决于我仍然有一些问题:
- 假设我想使用定期作业 - 我什么时候开始?当然,如果我的应用程序是第一次运行,我会先启动它。但是然后:它会在重新启动后继续存在并从它离开的地方拾起,还是我必须在我的应用启动时重新启动它(或者如果收到 BOOT FINISHED 广播)?
- 我的理解是否正确,即一旦启动定期作业,即使我的应用不再处于活动状态甚至不再运行,它也会继续运行,但仅在设备重新启动之前运行?
- 如何处理一次性作业重试?一旦安排好,我知道它们会一直运行直到完成,然后被处理掉,或者它们可以自动重新安排。假设它们被重新安排,它们会在设备重新启动后被拾取,还是在这种情况下我必须重新安排它们,因为系统在重新启动时会忘记它们?
编辑
好的,我刚找到一篇博文,上面写着WorkManager 确保即使重新启动应用程序或设备也能完成工作。我要试一试,看看会发生什么。不过,请随时回答我的问题,这样我才能睡得更好......
【问题讨论】:
-
“延迟几分钟” -> 请记住 WorkManager 的最小间隔是(据我所知)15 分钟。
-
感谢您提供此信息 - 我已经注意到我的 1 分钟间隔似乎没有被考虑在内 :-)
标签: android kotlin android-workmanager