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

Android应用更新时PeriodicWorkRequest是否会停止运行?

结论先行

Android应用通过Play Store自动更新时,已经调度完成的PeriodicWorkRequest不会被系统自动取消,你要实现的每6小时清理一次临时文件的周期任务,不会因为常规应用更新被直接终止。

行为逻辑说明
  • WorkManager会把所有周期任务的配置、调度状态持久化存储在应用私有目录下的内置数据库中,Play Store自动更新属于同签名应用的覆盖安装流程,不会清除应用私有目录内的持久化数据。更新完成后WorkManager初始化时会自动读取已存储的任务信息,按照原有配置继续执行调度逻辑。
  • 只有两类场景会导致已有的周期任务失效:
    • 用户手动卸载应用,或者在系统设置中对该应用执行了「清除全部数据」操作,此时应用私有目录下的所有数据(包括WorkManager存储的任务信息)会被完全抹除
    • 新版本代码中主动调用了cancelUniqueWork()、cancelAllWork()等取消任务的接口,或者在调度同名唯一任务时使用了ExistingPeriodicWorkPolicy.REPLACE策略,主动替换/删除了原有周期任务
开发注意事项

针对你提到的6小时清理临时文件的场景,要避免应用更新后重复创建任务:不要每次应用启动就无脑入队新的周期任务,必须给任务设置全局唯一的工作标识,配合ExistingPeriodicWorkPolicy.KEEP策略做调度,已存在同名任务时直接保留原有配置即可。

正确的调度代码示例:

// 构建间隔6小时的临时文件清理周期任务
val tempCleanWork = PeriodicWorkRequestBuilder<TempCleanWorker>(
    6, TimeUnit.HOURS
).build()

// 以KEEP策略入队唯一任务,避免重复创建、覆盖原有任务
WorkManager.getInstance(context).enqueueUniquePeriodicWork(
    "temp_file_clean_job",
    ExistingPeriodicWorkPolicy.KEEP,
    tempCleanWork
)

内容的提问来源于stack exchange,提问作者Patroclus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 12:06:51