Device Scheduling

The Device Scheduling module contains logic that detects whether or not the device is in an idle state, and may be rebooted without user disruption.

This module improves the uptake rate of software updates by providing a reliable signal of reboot readiness to installers. A reliable reboot readiness signal enables installers to reboot the device to apply an update, with the knowledge that the user hasn't been disrupted by the update.

Automatically rebooting devices in an unused state allows for faster updates, compared to waiting for the device to be organically rebooted. By reducing the time taken for an update to be applied, users receive critical fixes quicker which improves the overall health of their device. A quicker uptake rate also enables regressions to be found sooner.

This logic is updatable since determining the reboot readiness of a device involves the consideration of multiple criteria. These criteria may evolve over time, so being able to update this logic ensures that the reboot readiness signal remains valid.

Module boundary

In Android 12, this module contains code in the following new directory:

  • packages/modules/Scheduling

Package format

The Device Scheduling module (com.android.scheduling) ships as an APEX package.

The module contains two JAR files:

  • framework-scheduling.jar: Contains the API surface that an installer interacts with. This is a part of the bootclasspath.

  • service-scheduling.jar: Contains a new system service, RebootReadinessManagerService. Loaded by the system server process.

Dependencies

This module has no external dependencies.