所以我知道WorkManager
在受支持的API上使用了JobScheduler
,但是似乎没有任何方法可以使WorkManager
在重新启动后可以持久地工作吗?是请求BOOT_COMPLETED
权限和重新计划作业的唯一选择吗?
答案 0 :(得分:1)
要回答您的问题:重新启动设备后,您无需执行任何操作。 WorkManager会不断安排您的工作,而无需您的任何其他要求。
WorkManager将“工作”请求保留在其内部“房间”数据库中。这样可以保证在重新启动设备后执行工作。
documentation是团队去年在博客"Introducing WorkManager"上撰写的内容。
答案 1 :(得分:0)
WorkManager实际上用于持久保留可延期的任务,即使您的应用程序退出并且设备重启please refer to the docs也是如此。它对api 23及更高版本使用JobScheduler,在api 14至22上使用broadcastReceiver和AlarmManger。您可以使用约束来检查电池状态,网络覆盖范围等,具体取决于您的用例。您只需注意不要在将现有类添加到队列中后删除或重命名它们,因为WorkManager使用其内部数据库来存储这些类,如果您删除或重命名它们,应用程序将崩溃。