用途:面向 Android 后台执行场景,指导在 WorkManager、前台服务、Doze 模式处理与省电处理之间做出选择并落地实现。触发关键词包括 WorkManager、background task Android、Foreground Service、Doze mode、battery optimization、periodic work、background sync、JobScheduler、background processing Android。不适用于 iOS 后台任务、React Native 后台同步与 UI 架构。
主要能力:可延迟任务(WorkManager 2.10、OneTimeWorkRequest、PeriodicWorkRequest);前台服务类型(dataSync、location、mediaPlayback、shortService);约束(NetworkType、BatteryNotLow、StorageNotLow、DeviceIdle);任务链(WorkContinuation、并行链、唯一工作策略);测试(TestWorkerBuilder、TestListenableWorkerBuilder、WorkManagerTestInitHelper)。
使用方式:先按决策树选择 API——用户发起且需完成的任务用前台服务(短于 10 分钟用 shortService 类型),可延迟任务用 WorkManager(一次性用 OneTimeWorkRequest,周期性用 PeriodicWorkRequest,最小间隔 15 分钟),仅应用可见期间执行则用 viewModelScope 或 lifecycleScope 协程。可实现 CoroutineWorker,通过 setProgress 上报进度,IOException 时在 runAttemptCount 小于 3 前返回 Result.retry(),并通过 getForegroundInfo() 提供前台通知。用 Constraints 配置网络、电量与存储要求,用 setBackoffCriteria 设置指数退避,用 enqueueUniquePeriodicWork 配合 ExistingPeriodicWorkPolicy.KEEP 避免重复调度,用 beginWith/then/enqueue 串联下载、处理与上传。测试可用 adb shell dumpsys deviceidle force-idle 强制 Doze,用 adb shell am set-inactive <package> true 测试省电模式。
限制与反模式:可延迟任务不要用 AlarmManager;Android 12+ 不要用无前台通知的后台服务;周期任务不得低于 15 分钟;Android 14+ 必须在清单中声明 foregroundServiceType,否则抛 SecurityException;应通过 getWorkInfoByIdLiveData() 或 getWorkInfoByIdFlow() 观察 WorkInfo 并向用户展示进度;需为前台服务创建通知渠道,并让后台工作尊重用户省电偏好。未提供的具体版本兼容范围、收费与平台信息暂未提供。