根据WorkManager bugtracker上报告的各种问题,他们的文档对于WorkManager在这种边缘情况下的确切行为并不完全准确。
在某些设备上,当应用程序从任务管理器中清除时,应用程序会被强制停止,因此该部分是预期的。...来源
不幸的是,某些设备会从最近的菜单中终止应用程序作为强制停止。股票 Android 不这样做。当一个应用程序被强制停止时,它无法执行作业、接收警报或广播等。所以不幸的是,我们无法解决它——问题出在操作系统上,没有解决方法。资源
我们遇到的唯一问题是一些中国原始设备制造商将刷卡从最近删除视为强制停止的情况。发生这种情况时,WorkManager 将在下次启动应用程序时重新安排所有待处理的作业。鉴于这是违反 CDD 的行为,WorkManager 没有太多可以做的,因为它有一个客户端库。资源
此外,如果设备制造商决定修改现有的 Android 以强制停止应用程序,WorkManager 将停止工作(JobScheduler、警报、广播接收器等也将停止工作)。没有办法解决这个问题。不幸的是,一些设备制造商会这样做,因此在这些情况下,WorkManager 将停止工作,直到下次启动应用程序。资源
OneTimeWorkRequest
通过在具有股票 android 的 Pixel 2 XL 上对 a(无限制)进行密集测试,行为如下:
- 任务管理器关闭:
- 重启设备(工作运行):
- 应用信息“强制停止”:
- 重启设备(工作是“强制停止”):
您可以在dontkillmyapp.com上找到不同 OEM 行为的完整列表。Android 团队似乎也承认了这个问题,并在他们的 Android Q 的 CTS 测试中添加了一个测试。来源