You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:06:07