SchedulerGuarantees
data class SchedulerGuarantees(val survivesProcessDeath: Boolean, val survivesReboot: Boolean, val survivesForceQuit: Boolean, val honoursWallClock: Boolean, val supportsRetryBackoff: Boolean, val cancelsInFlight: Boolean, val minimumPeriodicInterval: Duration?, val maxConcurrentTasks: Int?)
What the current platform's Scheduler actually guarantees.
Honest about platform differences. Read via Scheduler.guarantees and use for UX decisions ("on iOS, show 'open the app daily so we can sync'").
v1 values per platform:
| Field | Android | iOS 18 | macOS 15 | JVM |
|---|---|---|---|---|
| survivesProcessDeath | true | true | false (in-process) | false (in-process) |
| survivesReboot | true | true | false | false |
| survivesForceQuit | true | false | false | false |
| honoursWallClock | approx | false (hint only) | approx | approx |
| supportsRetryBackoff | true | true (emulated) | true (emulated) | true (emulated) |
| cancelsInFlight | true | false | true | true |
| minimumPeriodicInterval | 15 min | 15 min recommended | 1 sec | 1 sec |
| maxConcurrentTasks | null | ~1000 | null | null |