AndroidX WorkManager:如何让定时任务在设备重启后持久化?
问题解答
是的,你的这个周期性WorkManager任务在设备重启后会自动保持持久化,完全不需要手动设置类似JobScheduler里的setPersisted(true)标记
WorkManager本身就是为持久化任务设计的,它会自动处理底层调度器的持久化逻辑——不管是API23+用的JobScheduler,还是更低版本的其他调度器。当你调用enqueue(workRequest)时,WorkManager已经把任务的所有信息(包括周期、Worker类、标签等)存储到了内部的SQLite数据库里。设备重启后,WorkManager会自动启动并扫描数据库,重新调度所有未完成的周期性任务,完全不需要你额外做任何配置。
不过有个小细节需要注意:你的Is30DaysOldWorker类必须是public访问权限,并且带有一个无参的默认构造函数,因为WorkManager在重启后需要重新实例化这个Worker类来执行任务,这是硬性要求。
另外,在API23+的场景下,你也不需要添加RECEIVE_BOOT_COMPLETED权限——WorkManager已经通过JobScheduler的系统机制处理了重启后的任务恢复,不用手动注册广播接收器。
你的这段代码本身就已经具备重启持久化能力:
PeriodicWorkRequest workRequest = new PeriodicWorkRequest.Builder(Is30DaysOldWorker.class, PERIODIC_WORKREQUEST_INTERVAL, TimeUnit.SECONDS) .addTag(IS_30_DAYS_OLD_WORKER) .build(); getWorkManager().enqueue(workRequest);
内容的提问来源于stack exchange,提问作者daasen
相关产品推荐
相关产品推荐

